上下文:
我一直在使用 Python 的 OpenCV2 包进行尝试。
我想用一个类似汽车后视摄像头的广角摄像头来玩几个点子。我从报废的撞车汽车上得到了一个有4根电线的广角摄像头,通过颜色编码猜测出每根线的作用,将它们与 USB Type A 的电源和接地线相连,并从 RCA 连接器馈入 NTSC 合成+合成- 信号。
我买了一个类似 这个 的 NTSC 转 USB 转换器。
它附带了驱动程序和一些现成的 VHStoDVD 软件。
问题:
我按以下普通示例测试它:
import numpy as np
import cv2
cam_index=0
cap=cv2.VideoCapture(cam_index)
print cap.isOpened()
ret, frame=cap.read()
#print frame.shape[0]
#print frame.shape[1]
while (cap.isOpened()):
ret, frame=cap.read()
#gray=cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imshow('frame', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
#release and close
cap.release()
cv2.destroyAllWindows()
这是来自Shell的输出:
True
Traceback (most recent call last):
File "C:/../cam_capture_.py", line 19, in <module>
cv2.imshow('frame', frame)
error: ..\..\..\..\opencv\modules\highgui\src\window.cpp:261: error: (-215) size.width>0 && size.height>0 in function cv::imshow
>>>
关键观察结果:
在控制面板中,USB dongle被显示为“OEM capture”,位于“声音、视频和游戏控制器”而不是“影像设备”,因此它不是一个简单的即插即用网络摄像头。
如果打开VHStoDVD软件,则需要配置两个方面:
- 设置为Composite
- 将编码设置为NTSC 然后,模拟相机提供的视频信号可以在VHStoDVD应用程序中正常显示。
当我在FLV(设备捕获)中打开设备视频通道时,设备流只是黑屏,但是如果我在FLV正在流式传输时打开VHStoDVD软件,则会在FLV上实时流式传输相机的视频并在VHStoDVD上显示黑屏。另一个重要区别是,当视频流在FLV中运行时,延迟非常大,约为0.5秒,而在VHStoDVD中运行时,延迟很小。
按照上述示例代码运行“cam_capture.py”时,在运行时的某个时候,我最终会得到一个停止错误代码0x0000008e:
详情:
stop: 0x0000008E (0xC0000005, 0xB8B5F417, 0X9DC979F4, 0X00000000 )
ks.sys - Address B8B5F417 base at B8B5900, Datestamp...
beg mem dump
phy mem dump complete
5. 如果我尝试打印frame.shape[0]或frame.shape[1],我会收到一个类型错误,说我不能打印类型None。
6. 如果尝试其他cam_index,结果始终为false。
简而言之:
在“控制面板”中,摄像头设备位于“声音、视频和游戏控制器”下,而不是“影像设备”下;
cam_index == 0;
capture.isOpened()= True;
帧大小为None;
如果VHStoDVD正在运行,并配置了复合NTSC,则相机可以正常工作,显然您无法在附件的打印屏幕上看到图像,但请相信我!;)
是否有任何形式的初始通信启动初始化方式,可以修复此问题,即模拟VHStoDVD设置(复合+NTSC)? 我想我可以开始VHStoDVD和dongle之间的通信,但感觉自己做了一些超出我的能力范围的事情,我认为这是一个关键的解决方案。
欢迎提出任何有建设性的见解、建议或更正!
谢谢
干杯
stop:...
错误和标准的 traceback 错误?看起来你应该立即得到 traceback,而不是它会“运行”..? - KobeJohn