【opencv】vc6.0中opencv打开摄像头失败解决方法

41 篇文章 1 订阅

因为要修改的工程是VC6.0下的,只能用opencv1.0读取摄像头,但是在读取的过程中出现了各种问题

问题描述:opencv1.0版本的摄像头驱动不兼容win7

http://www.xuebuyuan.com/2124092.html

http://blog.csdn.net/williamvalentine/article/details/6599313  (这篇是DirectShow解决方案

但是也发生了很奇怪的问题,笔记本自带的摄像头可以通过这种方式读取,然后从图像采集卡的却不能(可以通过opencv2正常调用)

因此为了避免各种麻烦,直接用opencv2.4.9写出了dll供VC6.0调用来得到iplimage


dll代码如下:

#include <opencv2/opencv.hpp>
#include <iostream>  

using namespace std;  
using namespace cv;  

CvCapture *capture; 
IplImage *frame;

extern "C" _declspec(dllexport)  int _stdcall openCam(int num)
{  
    if ((capture = cvCreateCameraCapture(num)) != 0)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}  


extern "C" _declspec(dllexport)  IplImage* _stdcall getIplimageFromCam()
{
    frame = cvQueryFrame(capture); 
    if (!frame || frame->height == 0 || frame->width == 0)
    {
        return 0;
    }
    else
    {
        return frame;
    }
}


有两个函数, openCam用来打开摄像头,getIplimageFromCam用来读取图片

编译后,将生成的dll与lib拷贝到VC6.0工程下


工程下添加代码:

#pragma comment(lib, "camdll.lib")

extern  _declspec(dllexport)  int _stdcall openCam(int num);
extern  _declspec(dllexport)  IplImage* _stdcall getIplimageFromCam();

后面的调用:

IplImage *image;

if (!openCam(0))//打开摄像头
{
    printf("Can not open cam !\r\n");	
    return;
}

image = getIplimageFromCam();
if (!image)
{
    printf("Can not load image !\r\n");	
    return;
}





评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值