OpenCv 问题:我打开摄像头,不使用回调函数能显示画面。但是使用回调函数处理每一帧,遇到了问题?

编译环境为win7+vc++6.0+OpenCv1.0,回调函数里面不写代码,摄像头能正常工作,加上这段代码,窗口变黑了。还有我的摄像头为什么不支持cvCaptureFr... 编译环境为 win7 + vc++6.0 + OpenCv1.0,回调函数里面不写代码,摄像头能正常工作,加上这段代码,窗口变黑了。还有我的摄像头为什么不支持cvCaptureFromCAM函数调用。全部代码如下:

#include <highgui.h>
#include <cv.h>
#include <cvcam.h>
#include <windows.h>

// 回调函数处理每一帧
void callBack(IplImage * image);
int main()
{
int ncams = cvcamGetCamerasCount(); // 返回可用摄像头的个数
cvNamedWindow("camera", CV_WINDOW_AUTOSIZE); // 新建窗口
HWND Camera; // 定义窗口句柄
cvcamSetProperty(0, CVCAM_PROP_ENABLE, CVCAMTRUE); // 选取第一个摄像头
cvcamSetProperty(0, CVCAM_PROP_RENDER, CVCAMTRUE); // 渲染
Camera = (HWND) cvGetWindowHandle("camera");
cvcamSetProperty(0, CVCAM_PROP_WINDOW, &Camera); // 设置窗口属性
cvcamSetProperty(0, CVCAM_PROP_CALLBACK, callBack);
cvcamInit(); // 初始化摄像头
cvcamStart(); // 开始工作
//cvCaptureFromCAM(-1);
cvWaitKey(0); // 等待按键触发
cvcamStop(); // 摄像头停止工作
cvcamExit(); // 关闭摄像头
return 0;
}

void callBack(IplImage *image)
{
IplImage* image1 = image;
int i,j;

assert (image);

for(i=0; i<image1->height; i+=10)
{
for(j=(image1->widthStep)*i; j<(image1->widthStep)*(i+1);
j+=image1->nChannels)
{
image1->imageData[j] = (char)255;
image1->imageData[j+1] = 0;
image1->imageData[j+2] = 0;

}

}
}
展开
 我来答
lzn_world
2012-12-22 · TA获得超过701个赞
知道小有建树答主
回答量:375
采纳率:0%
帮助的人:350万
展开全部
为什么不直接用cvCreateCameraCapture()呢?
你可以这样啊:
CvCapture *camera=cvCreateCameraCapture(0);
IplImage *frame;
while(1)
{
if(退出条件) break;

frame=cvQueryFrame(camera);
//对frame做你想要做的处理

}
现在都到opencv2.4.3啦,别用1.0啦
jhh1239887296
2012-12-23 · 超过28用户采纳过TA的回答
知道答主
回答量:114
采纳率:0%
帮助的人:76.4万
展开全部
不支持cvCaptureFromCAM函数调用可能是因为opencv1.0的摄像头驱动不支持win7,做工程的最好还是换XP系统,前不久我就换了,建议用下面的语句来获取一帧,再进行处理
capture=cvCaptureFromCAM(0);
m_pframe=cvQueryFrame(m_pcapture);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Wu_Ascend
2012-12-09 · 超过20用户采纳过TA的回答
知道答主
回答量:128
采纳率:0%
帮助的人:88.2万
展开全部
win7+vc6.0+opencv1.0是打不开摄像头的,因为opencv1.0的摄像头驱动不支持win7,还得用vs2008或vs2010配合更高版本的视觉库才行,如果你不想换可以录一个视频来进行处理,我现在就是这样弄的,手机打这么多字好累啊,还有什么不明白的私聊我
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式