gpt4 book ai didi

python - 抓取框架 NTSCtoUSB 加密狗、opencv2、python 包装器

转载 作者:太空狗 更新时间:2023-10-30 02:31:47 25 4
gpt4 key购买 nike

上下文:

我一直在研究 python 的 opencv2 包装器。我想尝试一些想法,并使用类似于汽车“后视”摄像头的广角摄像头。我从一辆报废的撞车上得到了一个(它有 4 根电线)我从电线颜色编码中进行了有根据的猜测,将其连接起来,以便我从 A 型 USB 为电源和地线供电,并为 NTSC 复合+复合-从一个 RCA 连接器。我买了一个 NTSC 转 USB 转换器 like this one .

它带有驱动程序和一些现成的 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

>>>

主要观察结果:

SCREENSHOTS

  1. 在控制面板中,USB 加密狗在声音视频和游戏 Controller 中显示为“OEM 捕获”。因此它在“成像设备”中不被视为简单的即插即用网络摄像头

  2. 如果我打开 VHStoDVD 软件,我需要配置 2 个方面:

    • 设置为复合
    • 将编码设置为 NTSC然后来自模拟摄像机的摄像机馈送在 VHStoDVD 应用程序中显示正常
  3. 当我在 FLV 中打开设备视频 channel 时(设备捕获)。设备流只是一个黑屏,但如果我在 flv 流式传输时打开 VHStoDVD 软件,我会获取摄像机的源以在 FLV 上流式传输,并且 VHStoDVD 源上会显示黑屏。另一个重要的区别是,与在 VHStoDVD 中运行相比,当 feed 以 FLV 格式运行时,会有大约 0.5 秒的巨大延迟。

  4. 当在运行时的某个地方按照上面的示例代码运行“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],我收到一个类型错误,说我无法打印 type None

6.如果尝试其他 cam_index 结果总是 false

简单描述:

在“控制面板”中,相机设备位于“声音视频和游戏 Controller ”下,而不是“成像设备”下;

cam_index==zero;

capture.isOpened()=True;

帧大小为None;

如果 VHStoDVD 以复合 NTSC 配置运行,则摄像机可以正常工作,显然您看不到附件中带有打印屏幕的图像,但请相信我! ;)

是否有任何形式的与加密狗开始通信的初始化可以解决这个问题,即模拟 VHStoDVD 设置(复合+NTSC)?我以为我可以在 VHStoDVD 和加密狗之间窃取通信的开始,但感觉我正在超越并做一些我认为是关键转向解决方案的事情。

欢迎任何建设性的见解、建议和更正!

谢谢

干杯

最佳答案

好的,所以经过更深入的调查,最初的怀疑得到证实,即因为 NTSC 加密狗没有作为成像设备处理(它被视为视频 Controller ,因此类似于电视调谐卡的模拟)这意味着虽然我们能够使用 cam_index=0 调用 cv2.VideoCapture 视频 channel 本身不传输,因为我们需要定义一堆参数

  1. 编码
  2. 帧大小
  3. 帧率等

问题是因为该设备不受支持,因为调用 cv2.VideoCapture.set(parameter, value) 的成像设备似乎不会更改原始视频源上的任何内容。

我没有找到解决方案,但我找到了解决方法。网上似乎有很多选择。搜索关键字 DV to webcam 或 camcorder as a webcam。

我使用了 DVdriver ( http://www.trackerpod.com/TCamWeb/download.htm )(我使用了试用版,因为我很便宜!)。

为什么有效?

据我所知,DVdriver 从设置为视频 Controller 的设备接收数据(类似于从“Windows Movie Maker”或 ffmpeg 捕获数据),然后通过“fairydust”输出 cam_index=0 上的帧(假设没有连接其他摄像头)作为“成像设备”网络摄像头。

总结

TLDR 使用 DVdriver 或类似软件。

我找到了一个解决方法,但我真的很想从第一原则来理解它,并可能从 python 中生成类似的 NTSC 加密狗初始化,没有任何其他软件依赖性,但在此之前,希望这能帮助其他也在苦苦挣扎的人或者假设这是硬件问题。

现在我将留给您一些贝克特:曾经尝试过。曾经失败过。不管。再试一次。再次失败。失败更好。 (!)

关于python - 抓取框架 NTSCtoUSB 加密狗、opencv2、python 包装器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22146205/

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