语境:
我一直在玩 python 的 opencv2 包装器。我想尝试一些想法,并使用类似于汽车中的“后视”摄像头的广角摄像头。我从一辆报废的撞车上得到一个(它有 4 根电线)我从电线颜色编码中得到了一个有根据的猜测,将它连接起来,以便我从 A 型 USB 为电源线和地线供电,并从一个 RCA 连接器。我买了一个像这样的 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 加密狗在声音视频和游戏控制器中显示为“OEM 捕获”。因此,它不被视为“成像设备”中的简单即插即用网络摄像头
如果我打开 VHStoDVD 软件我需要配置 2 个方面:
- 设置为复合
- 将编码设置为 NTSC,然后在 VHStoDVD 应用程序中显示来自模拟摄像机的摄像机输入正常
当我在 FLV(设备捕获)中打开设备视频通道时。设备流只是黑屏,但如果我在 flv 流式传输时打开 VHStoDVD 软件,我会在 FLV 上流式传输相机的提要,并且 VHStoDVD 提要上显示黑屏。另一个重要的区别是,与在 VHStoDVD 中运行相比,当提要在 FLV 中时存在大约 0.5 秒的巨大延迟。
在运行时按照上面的示例代码运行“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 结果总是假的
TLDR:
在“控制面板”中,相机设备位于“声音视频和游戏控制器”下方,而不是“成像设备”下方;
cam_index==零;
capture.isOpened()=True;
帧大小为无;
如果 VHStoDVD 以复合 NTSC 配置运行,则相机可以正常工作,显然您无法在附件中看到带有打印屏幕的图像,但请相信我!;)
是否有任何形式的初始化与加密狗的通信可以解决这个问题,即模拟 VHStoDVD 设置(复合 + NTSC)?我以为我可以在 VHStoDVD 和加密狗之间开始通信,但感觉就像我正在做一些我认为是关键转折解决方案的事情。
欢迎任何建设性的见解、建议、更正!
谢谢
干杯