opencv 做视频捕捉的时候摄像头无法开启。显示出来的图像都是黑色的。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了opencv 做视频捕捉的时候摄像头无法开启。显示出来的图像都是黑色的。相关的知识,希望对你有一定的参考价值。
在第一次运行的时候,有提示选择哪个摄像头,我忘记我选的是什么了,我记得第二个是联想的摄像头。在之后的运行时就没有摄像头选择的提示。在哪里可以重新选择摄像头。
用的是别人的代码,在别人电脑上就可以读视频。
#include "cv.h"
#include "highgui.h"
int main( int argc, char** argv )
CvCapture* capture = 0;
IplImage* frame = 0;
IplImage *image=NULL;
IplImage *imag=NULL;
capture = cvCaptureFromCAM( 0 );
int fps=5;
CvVideoWriter* writer = 0;
int isColol=1;
int frameW=640;
int frameH=480;
writer=cvCreateVideoWriter("f:\\out1.avi",-1,fps,cvSize(frameW,frameH),isColol);
CvVideoWriter* writer1 = 0;
CvVideoWriter* writer2 = 0;
writer2=cvCreateVideoWriter("f:\\out2.avi",-1,fps,cvSize(frameW,frameH),isColol);
cvNamedWindow( "摄像头", 1 );
for(int i=0;i<50;i++)
frame = cvQueryFrame( capture );
char str[10];
itoa(i,str,10);
char str1[10]="f:\\";
strcat(str1,str);
strcat(str1,".jpg");
cvSaveImage(str1,frame);
imag = cvLoadImage( str1,-1) ;
cvWriteFrame(writer2,imag);
image = cvLoadImage( str1, 0) ;
cvWriteFrame(writer,image);
cvShowImage( "摄像头", frame );
cvWaitKey(40);
cvReleaseVideoWriter(&writer);
cvReleaseVideoWriter(&writer2);
cvReleaseImage(&frame);
cvReleaseImage(&image);
cvReleaseCapture(&capture );
cvDestroyWindow("摄像头");
return 0;
补充:用的win7 vc6 opencv1.0
#include "cxcore.h"
#include "cvcam.h"
#include "windows.h"
void callback(IplImage* image);
int main()
int ncams = cvcamGetCamerasCount( );//返回可以访问的摄像头数目
int width=320;
int height=240;
HWND MyWin;
// 设置系统属性
cvcamSetProperty(0, CVCAM_PROP_ENABLE, CVCAMTRUE); //Enable视讯
//0:欲设置属性的摄像头序号; 第二个参数是属性名字;
//第三个参数是指向设置值的指针
cvcamSetProperty(0, CVCAM_PROP_RENDER, CVCAMTRUE); //启用视讯
// MyWin 是窗口 HWND 的类型
MyWin = (HWND) cvGetWindowHandle("cvcam window");
cvcamSetProperty(0, CVCAM_PROP_WINDOW, &MyWin); // Selects a window
cvcamSetProperty(0,CVCAM_RNDWIDTH,&width);
cvcamSetProperty(0,CVCAM_RNDHEIGHT,&height);
//video rendering
//回调函数将处理每一帧
cvcamSetProperty(0, CVCAM_PROP_CALLBACK, callback);
cvcamInit( );
cvcamStart( );
// 现在程序开始工作
cvWaitKey(0);
cvcamStop( );
cvcamExit( );
return 0;
// 回调函数
void callback(IplImage* image)
cvcamPause();
cvcamGetProperty(0,"raw_image",&image);
cvcamResume();
本回答被提问者和网友采纳
利用opencv实现视频捕捉功能
1 import cv2 as cv 2 import numpy as np 3 4 5 def video_demo(): 6 capture = cv.VideoCapture(0) #打开摄像头,参数0代表设备ID(设备表示号),也就是电脑自带的摄像头,人如果要设置成其他摄像头,可以更改这个参数 7 while(True): 8 ret,frame = capture.read() #读取摄像头,它能返回两个参数,第一个参数是bool 型的ret,其值为True或者False,代表有没有读到图片;第二个参数frame,表示读取当前一帧的图片 9 frame = cv.flip(frame,1) #翻转 等于0:上下颠倒 大于0:水平颠倒 小于0:180旋转 10 cv.imshow("video",frame) 11 c = cv.waitKey(10) 12 if c == 27:
break # 这里代码的意思是按下esc键就会把这个捕捉到的视频图片关闭掉 或者也可以按下q 键来关闭视频图片,但是代码是这样写 cv.waitKey(10) & 0xff == ord(‘q‘)
15 video_demo()
16 cv.waitKey(0)
17 18 cv.destroyWindows()
注意:上面那个捕捉到摄像头的视频,点击窗口关闭是关闭不了的,而且当你修改图片翻转方式的时候,你再执行代码的话会有代码报错,因为他是一个死循环,所以你必须按照上面说的那样,才能实现视频翻转调节功能,这里一定要注意,一开始,自己以为写的代码有bug,后来注意到了这里,不是代码的原因,这里涉及到个人隐私问题,就不拿视频照片举列子了,按照我上面说了,操作就完全没问题,哈哈哈。
以上是关于opencv 做视频捕捉的时候摄像头无法开启。显示出来的图像都是黑色的。的主要内容,如果未能解决你的问题,请参考以下文章
opencv能读取视频~但是无法读取摄像头,显示只有一片黑~
我是在ubuntu10.04下用opencv2.3做一个连续捕捉摄像头视频的图像并将它保存成图片的程序,可是总是没有保存