gpt4 book ai didi

python-2.7 - 在 Python 中使用 Opencv 从图像中减去背景

转载 作者:太空宇宙 更新时间:2023-11-03 22:28:31 25 4
gpt4 key购买 nike

以下程序将“前景”显示为全黑,而不是“框架”。我还检查了“frame”中的所有值是否都等于“foreground”中的值。它们具有相同的 channel 、数据类型等。我正在使用 python 2.7.6 和 OpenCV 版本 2.4.8

    import cv2    import numpy as np    def subtractBackground(frame,background):        foreground = np.absolute(frame - background)        foreground = foreground >= 0        foreground = foreground.astype(int)        foreground = foreground * frame        cv2.imshow("foreground",foreground)        return foreground    def main():        cap = cv2.VideoCapture(0)        dump,background = cap.read()        while cap.isOpened():            dump,frame = cap.read()            frameCopy = subtractBackground(frame,background)            cv2.imshow('Live',frame)            k = cv2.waitKey(10)            if k == 32:                break    if __name__ == '__main__':        main()

最佳答案

因为您要告诉 OpenCV 显示 64bpc 图像。您转换 .astype(int) 表示“int64”或“int32”,具体取决于您的架构。改用 .astype('uint8') 。与完整的 64 位范围相比,您的最大亮度 255 看起来是黑色的。

相关问题:

foreground = np.absolute(frame - background)

整数下溢。表达式 frame - background 不会自动转换为带符号的数据类型。您需要不同的数据类型来进行此类计算(如果性能不重要,请尝试浮点型),或者找到一个 OpenCV 函数来为您处理所有事情。

foreground = foreground >= 0

因为 foreground 是 'uint8' 类型,它永远不能为负,所以结果都是 1。只需插入一些 print repr(foreground) 语句即可调试此类问题。

关于python-2.7 - 在 Python 中使用 Opencv 从图像中减去背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33054711/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com