python - OpenCV使用单色相机将帧扔到输出时得到3张图片而不是1张
问题描述
我使用单色相机 oCam-1MGN-U 从视频中获取帧。当我想将帧扔到输出时,我得到了 3 张图片而不是 1 张。我知道这台相机使用 1 个通道。我该如何解决这个问题?
if __name__ == '__main__':
cap = cv2.VideoCapture(1) # Streamming from camera monochromatic
while(cap.isOpened()):
succes, frame = cap.read()
if(succes):
cv2.imshow('Orginal',frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
print('End')
我在 linux 上工作,我得到了三张与此非常相似的图片:
https://github.com/TheImagingSource/tiscamera/issues/20
我所拥有的框架具有形状:480、640、3
我尝试了什么:
- 我在 OpenCV 3.2 和 3.4 上测试过
- 获取此帧并将其拆分
b, g ,r = cv2.split(frame)
并仅将一个通道输出到输出,但我仍然得到 3 张图片 - 更改视频流的分辨率
解决方案
听起来这是自 2014 年以来已知的一个问题: https ://github.com/TheImagingSource/tiscamera/issues/20
OpenCV 捕获类处于非常悲惨的状态(不仅与 v4l2 有关)。您的图像看起来那样的原因是它将传入的 Y800 解释为 rgb,同时试图保持正确的分辨率。这只能通过修补 OpenCV 或使用其他方式抓取图像来解决。
单色的建议是使用:
cv2.imdecode(frame, CV_LOAD_IMAGE_GRAYSCALE)
你能试着让我们知道它是否有效吗?
推荐阅读
- html - Html 标签不使用工具提示呈现
- sql - 返回冒号左边的字符
- python - 通过列表理解或映射加速 numpy 数组分配?
- python - 当数组非常大时,根据另一个数组的范围有效地分离数组的一部分
- mysql - MySQL select - 将重复的行数据添加到新列
- ios - ARKit - 在场景编辑器中向对象添加纹理
- list - 为什么不使用显示输入时,使用下面代码的结果不同?
- regex - 从正则表达式匹配中过滤掉一个表达式
- vue.js - Vue过滤列表之后还orderBy什么?
- terraform - 获取 terraform 以忽略已停止实例的“associate_public_ip_address”状态