捕获摄像头的其中一帧,并显示,但捕捉到的总是黑色图像

h532600610 2016-07-01 03:53:13
我想捕获摄像头的其中一帧,并显示,但是捕捉到的总是黑色图像,不知道是因为什么。

显示的图像如下
摄像头是用的微软的。摄像头正常工作

代码是在VC++6.0上编写的
#include <cv.h>
#include <highgui.h>
#include <cxcore.h>
#include <stdlib.h>
#include <stdio.h>

int main(int argc, char* argv[]){

IplImage* img;
//IplImage* img2;
CvCapture* pCature;
char* filename="..//save1.jpg";
//img2=cvLoadImage("..//1.jpg");
if (!(pCature = cvCaptureFromCAM(-1)))
{
MessageBox(NULL,TEXT("no camara!"),TEXT("warning"),MB_OK);
return 0;
}

for (int i=0;i<1;i++)
img=cvQueryFrame(pCature);

cvSaveImage(filename,img);
//原点显示 默认值 0:左上角是原点 1:左下角是原点
img->origin=1;

//输出图像通道数 3通道图像RGB模式
printf("nChannels is %d",img->nChannels);
cvNamedWindow("1");
cvShowImage("1",img);
cvWaitKey(0);
return 0;
}


是什么原因啊,很茫然。。。谢谢各路大神
...全文
826 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
@风轻云淡_ 2019-04-10
  • 打赏
  • 举报
回复

if (!(pCature = cvCaptureFromCAM(-1)))

摄像头编号应该是从0开始吧.改成0试试?
Method.Jiao 2019-04-10
  • 打赏
  • 举报
回复
感觉应该是系统权限问题,你的调试器与程序必须得是管理员权限运行才行
qiexi1235 2019-04-02
  • 打赏
  • 举报
回复
请问是什么原因呢,我的是vs2017,能打开相机但是捕捉的都是黑的
Pokeeeer 2016-07-06
  • 打赏
  • 举报
回复
把截图保存下来,在windows中手动打开,看看截图是否正确。 如果不正确,看看每个API的返回值有没有异常。
赵4老师 2016-07-06
  • 打赏
  • 举报
回复
设备管理器中摄像头启用了吗? 以管理员身份运行了吗?
赵4老师 2016-07-01
  • 打赏
  • 举报
回复
换VS2008或VS2010

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧