最近在用opencv从摄像头中读文件时,用其提供的cvcamSetProperty()函数设置回调函数(cvcamSetProperty(0, CVCAM_PROP_CALLBACK, callback)),在dev-c++下面出现了参数格式不对的问题。这里按照函数的说明,定义callback函数为void callback(IplImage * img);结果dev-c++在编译时提示invalid conversion from void(*)(IplImage *) to void *。在vc环境下编译却很正常。从提示里面可以看出,是因为类型转换的问题。dev-c++里面用g++编译程序是,其时不能将函数指针转化为void型的指针的,而在vc里面则可以自动转化,所以,结局问题的方法就是在第三个参数上家强制的类型转换,cvcamSetProperty(0, CVCAM_PROP_CALLBACK, (void *)&callback);
具体的使用摄像头的代码如下:
#include <cv.h>
#include <highgui.h>
#include <cvcam.h>
#include <iostream>
using namespace std;
void callback(IplImage* pImg);
int main( int argc, char** argv )
{
int ncams=cvcamGetCamerasCount();
assert(ncams);