winneking 发表于 2018-9-17 13:58

运行老师给的例程发现一个奇怪的问题?

刚下载了资料,里面有老师给的两个打开相机的例程,其中一个MFCApplication1,修改好openCV的路径后,编译通过,然而运行到下面这句
m_pDeviceFilter->EnumPins(&pEnum);时就报下面这个错误

这个是cameraDC.cpp里的语句,关键是,只在打开我外接的usb摄像头时出现报错,打开笔记本集成的摄像头就正常打开了。
关键是集成的DirectShow的函数文件cameraDC.cpp和上次课给的例程里的一模一样,同样使用这个cameraDC.cpp,在上次课的例程里就能打开外接的usb摄像头,同样运行到m_pDeviceFilter->EnumPins(&pEnum);这句就不会报上面的错误。百度上查了一下这个错误,但还是没找到方法解决。究竟是什么原因造成的,麻烦知道的人帮忙看看。

winneking 发表于 2018-9-18 14:06

终于找到原因了,果然是个弱智的问题,因为CComboBox的变量是list,是一堆栈方式压入的,所以序号小的相机在底部,用GetCurSel()读出的序号反而是大的,需要用相机总数减一下,这里序号是从0开始的,所以要用相机数减1后再减GetCurSel()读出的序号,才是DirectShow里相机的编号。
页: [1]
查看完整版本: 运行老师给的例程发现一个奇怪的问题?