关于opencv使用淘宝视频采集卡蓝屏的办法~
来源:互联网 发布:淘宝二手手机市场 编辑:程序博客网 时间:2024/04/29 06:28
最近使用淘宝上的三无视频采集卡(没办法只有三无货)做opencv开发,结果win10+3.1.0+vs2015蓝屏了……醉了
然后上网弄了好久才最终解决。现在总结一下,其实大部分具体方法也是网友提供的,我补充了一小部分,等会会给出参考网址
问题出在采集卡的驱动不兼容上,解决需要修改DirectShow的代码
1.配置DirectShow
VS2015是自带了DirectShowSDK 的,在 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include。
如果你有的话直接在项目属性里 Additional Include Directories 添加 $(FrameworkSDKDir)Include,Additional Library Directories 添加 $(FrameworkSDKDir)Lib。
2.使用CCameraDS类
在http://wiki.opencv.org.cn/index.php/%E4%BD%BF%E7%94%A8DirectShow%E9%87%87%E9%9B%86%E5%9B%BE%E5%83%8F#.E4.B8.8B.E8.BD.BD
中下载压缩包,把相关代码加入工程。编译,你就会发现缺少qedit.h头文件!
3.关于qedit.h
因为DirectShow已经逐渐被抛弃,sdk不完整。在http://download.csdn.net/download/baidu_31147059/9441079下载qedit.h后加入工程。更不完整的东西在后面……你要
①将qedit.h中的“dxtrans.h" 和使用 "IDXEffect"的地方统统注释掉。4.iconfig接着会出问题,为null包括//#include "dxtrans.h" -- Line 498// IDxtCompositor //: public IDXEffect // IDxtAlphaSetter //: public IDXEffect // IDxtJpeg //: public IDXEffect // IDxtKey //: public IDXEffect ②在include <qedit.h>前面加上如下语句#define __IDxtCompositor_INTERFACE_DEFINED__#define __IDxtAlphaSetter_INTERFACE_DEFINED__#define __IDxtJpeg_INTERFACE_DEFINED__#define __IDxtKey_INTERFACE_DEFINED__#include "amstream.h"
解决:注释掉
else
{
//////////////////////////////////////////////////////////////////////////////
// 加入由 lWidth和lHeight设置的摄像头的宽和高 的功能,默认320*240
// by flymanbox @2009-01-24
//////////////////////////////////////////////////////////////////////////////
IAMStreamConfig *iconfig = NULL;
hr = m_pCameraOutput->QueryInterface(IID_IAMStreamConfig, (void**)&iconfig);
AM_MEDIA_TYPE *pmt;
if(iconfig->GetFormat(&pmt) !=S_OK)
{
printf("GetFormat Failed ! n");
return false;
}
// 3、考虑如果此时的的图像大小正好是 nWidth * nHeight,则就不用修改了。
if ((pmt->lSampleSize != (nWidth * nHeight * 3)) && (pmt->formattype == FORMAT_VideoInfo))
{
VIDEOINFOHEADER *phead = (VIDEOINFOHEADER*)(pmt->pbFormat);
phead->bmiHeader.biWidth = nWidth;
phead->bmiHeader.biHeight = nHeight;
if((hr = iconfig->SetFormat(pmt)) != S_OK)
{
return false;
}
}
iconfig->Release();
iconfig=NULL;
MYFREEMEDIATYPE(*pmt);
}
这一段
5.最后是最关键的,感谢http://www.ithao123.cn/content-853519.html
链接各个引脚,这个是能否打开easycap的关键,我们普通的usb摄像头只有一个输入引脚,而easycap不一样,它是集视频、音频一体的设备,那么输入设备的引脚选择就很重要了,你打开一个音频设备,却选择视频的方式,怎么可以打开?
关键代码:
CComPtr<IEnumPins> pEnum;
m_pDeviceFilter->EnumPins(&pEnum);
hr = pEnum->Reset();
pEnum->Skip(2);//跳过非视频引脚
hr = pEnum->Next(1, &m_pCameraOutput, NULL);
我在这里跳过了两个引脚(具体几个自己多尝试一下),然后设置SetCrossBar(),顺利打开easycap摄像头。
附录:参考资料http://www.ithao123.cn/content-853519.html
http://zhidao.baidu.com/question/288615517.html
http://wiki.opencv.org.cn/index.php/%E4%BD%BF%E7%94%A8DirectShow%E9%87%87%E9%9B%86%E5%9B%BE%E5%83%8F#.E4.B8.8B.E8.BD.BD
http://bbs.csdn.net/topics/390208085
http://yekezhong.com/930/
p.s. 要想不限制视频长宽,把OpenCamera函数去掉后面参数
- 关于opencv使用淘宝视频采集卡蓝屏的办法~
- 使用directshow代替opencv的vfw后视频采集
- 关于视频采集的网址
- 关于视频采集的网址
- 蓝屏的办法
- 【OpenCV】用OpenCV进行大恒CG400CG410视频采集卡的视频读取
- Python+OpenCV采集本地摄像头的视频
- 关于Win10创意者更新之后蓝屏的修复办法
- 视频采集卡二次开发(天敏SDK2500+openCV)
- 视频采集卡二次开发(天敏SDK2500+openCV)
- 关于视频采集的一些说明
- 关于视频采集的一些说明
- 关于视频采集的一些说明
- 关于Linux下的视频采集编程
- VC++关于的VFW视频采集方案
- opencv+directshow采集视频图像
- DirectShow视频采集和OpenCV
- OpenCV - 视频及图像采集
- 链接中javascript: void(0)的使用介绍
- STM32问题集之BOOT0和BOOT1的作用
- bootstrap 头部 使得ios 系统 input 固定
- Java EE 工程师系列 之 从后台到页面【最佳实践】
- JAVA正则表达式语法大全
- 关于opencv使用淘宝视频采集卡蓝屏的办法~
- 吊炸天!74款APP完整源码!(安卓+IOS)
- 代码代地
- 基金知识整理-名词解释(1)
- 水溶彩铅-手绘苹果
- 资料搬运
- ROAP
- 0-1背包:使用滚动数组时为何要逆序枚举
- PAT-1008 数组元素循环右移问题