gpt4 book ai didi

Python Opencv黑窗

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

使用 python 和 opencv 我对超过 20 张图像的图像进行平均,图像之间的间隔为 0.5 秒。到目前为止,我已经成功地使用了这个库,但是这个库给我带来了问题。这是我的代码

import numpy as np
import cv2
import time

webcam = cv2.VideoCapture(0)
webcam.set(cv2.cv.CV_CAP_PROP_FRAME_WIDTH, 640)
webcam.set(cv2.cv.CV_CAP_PROP_FRAME_WIDTH, 480)
webcam.set(cv2.cv.CV_CAP_PROP_EXPOSURE, .2)

total = np.zeros((480,640,3), int)
time.sleep(0.500)
x = 0
while x < 19:
retval, img = webcam.read()
if(retval == True):
total += img;
time.sleep(0.500)
x += 1

result = np.zeros((480,640,3), int)
result = np.divide(total, 20, dtype=int)

cv2.namedWindow("result",cv2.cv.CV_WINDOW_AUTOSIZE)
cv2.cv.MoveWindow("result", 0, 0)
while True:
cv2.imshow("result", result)
if(cv2.waitKey(10) == 27):
break

cv2.destroyAllWindows()
webcam.release()

虽然运行该程序没有出现错误,但它显示的是黑色图像。然而,img 变量返回工作图像。平均可能会在这里产生错误,但据我所知,结果矩阵的内容是正确的。

最佳答案

您在 OpenCV 中混合使用 np.uint8int32,这会导致 All Blacks 出现。

虽然您需要确保累加器数组 total 具有足够的位深度来进行增量 += 求和阶段,但是你要传递给 cv2.imshow()np.divide() shall 结果可显示 dtype = np.uint8

result = np.zeros( (480,640,3),        np.uint8 )    # needless to pre-allocate
result = np.divide( total, 20, dtype = np.uint8 ) # just enough to assign here

注意 1:

您可能还会注意到 double .set() 中的拼写错误,如果 VideoCapture() 设备仍返回数组,这不会造成任何问题(480,640,3) np.uint8-s

webcam.set(cv2.cv.CV_CAP_PROP_FRAME_WIDTH, 640)
webcam.set(cv2.cv.CV_CAP_PROP_FRAME_WIDTH, 480)
# ||||| ^^^

关于Python Opencv黑窗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27003823/

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