首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于python版本的C++ python扩展输出的差异

基于python版本的C++ python扩展输出的差异
EN

Stack Overflow用户
提问于 2017-11-18 08:29:33
回答 1查看 118关注 0票数 2

最近,我发现需要为我的项目的OpenCV的VideoCapture()确定哪个设备(设备名称)与哪个源输入(设备索引)相关。

由于我使用的是OpenCV的Python (根据PyCharm的说法是v3.3.0.10),根据我的研究工作,有许多后端功能显然无法从Python中进行操作。

在Windows10Home 64位上,使用Python3.6.3,我看到了这个由小玲完成的手巧工作,它为我的需要创建了一个专用的Python2扩展。在使用Python3 3的C++文件 文档使其成为Python3兼容之后,它成功地编译了。然后我运行了一个测试,它的工作符合我的期望。

出于纯粹的好奇心,并且有Python2.7.14在手(注意: OpenCV v3.3.0.10也是为我的Python2安装的--根据PyCharm的说法),我继续使用相同的setup.py为Python2编译了相同的C++扩展。它编译成功,然后,我运行相同的test.py ...but得到了不同的结果。

当我运行test.py for Python3时,结果如下(正确):

注意:当代码等待用户输入时,我在运行时停止了它。

代码语言:javascript
复制
OpenCV version: 3.3.0
0: DroidCam Source 3
1: Integrated Webcam
Select a camera (0 to 1):
Process finished with exit code 1

Python2的结果..。也是“正确”:

代码语言:javascript
复制
OpenCV version: 3.3.0
0: DroidCam Source 3
1: Integrated Webcam
2: DroidCam Source 1
3: DroidCam Source 2
4: DroidCam Source Mini (240p)
Select a camera (0 to 4): 
Process finished with exit code 1

我在笔记本电脑上安装的照相机如下:

  1. 我笔记本电脑的集成摄像头
  2. 我的手机(华为P9)使用DroidCamX (v6.4.8)

注意: DroidCamX有一个桌面应用程序,可以与Android DroidCamX应用程序协同工作。

Note2:我正在通过一个(物理/有线) USB连接使用DroidCamX。

事实上,我只使用了两个物理摄像头--(预期的)设备索引01 --这使得Python3的输出完全正确,因此工作正常。但是,使用Python2时,当我访问设备索引2-4时,所有这些都会从我的手机返回一个“正确”的视频提要--包括指定240 p视频提要的索引4

因此,我的问题是:为什么来自Python2和Python3的输出是不同的?为什么Python2会显示另外3个可用的视频提要(这一切似乎都是“正确的”)?

注意:“正确”指的是使用正确的物理设备,在正确的模式下,尽管在物理相机的数量上是不正确的。

Note2:使用超链接将所有代码链接到此问题,以尽量减少此问题的长度。

EN

回答 1

Stack Overflow用户

发布于 2017-12-24 23:15:21

DroidCam源1、2和Mini (240 P)是DirectShow视频源滤波器。我假设python 3要么不支持DirectShow,要么默认禁用它的使用。源3和集成摄像头使用全面的内核驱动程序。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47364081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档