opencv读摄像头

通俗代码,但是在我机器上不知道为什么没有用

int main()    
{    
	//读取摄像头    
	//声明IplImage指针    
	IplImage* pFrame = NULL;     
	CvCapture* pCapture = NULL;       
	//窗口通过窗口名来标识    
	cvNamedWindow("video", CV_WINDOW_AUTOSIZE);       
	pCapture = cvCreateCameraCapture(CV_CAP_ANY);        
	while(pFrame = cvQueryFrame( pCapture ))    
	{      
		cvShowImage("video", pFrame);    
		//延时 ,不然不会显示图像的,应该是扫描太快了    
		cvWaitKey(33);  //不然会因为太快导致显示还没完九需要去显示下一帧,因此会显示nothing 
		printf("aaaa\n");
	}    
	//释放图像    
	cvReleaseImage(&pFrame);       
	//销毁窗口    
	cvDestroyWindow("video");    
	//释放摄像设备    
	cvReleaseCapture(&pCapture);    
	return 0;     
}
以下是可以用的代码

#include "cv.h"
#include "highgui.h"
#include "cvcam.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();
}


但是注意要添加cvcam.h这个头文件,在\OpenCV\otherlibs\cvcam\include中包含进来

### 使用 OpenCV 取灰度图像的摄像头输入 为了实现从摄像头取并处理成灰度图像的功能,在初始化视频捕获对象时可以指定标志位来控制取模式。具体来说,通过设置`cv2.VideoCapture()`方法中的参数或者在调用`read()`函数之后立即应用色彩空间转换操作。 当创建`VideoCapture`实例时,并未提供直接设定为灰度模式的选项;因此通常先按默认方式获取彩色帧数据,再利用`cvtColor()`函数将其转变为灰阶格式[^2]。然而更高效的做法是在每次抓取新帧之前就指明希望得到的是黑白画面: ```python import cv2 cap = cv2.VideoCapture(0) while True: ret, frame = cap.read() if not ret: break gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) cv2.imshow('Gray Frame', gray_frame) key = cv2.waitKey(1) & 0xFF if key == ord('q'): break cap.release() cv2.destroyAllWindows() ``` 上述代码展示了如何打开设备索引为 `0` 的摄像机(通常是内置摄像头),并将每一帧转化为灰色级别后再展示出来。如果想要简化流程并且减少不必要的计算开销,则可以在调用`imread()`或类似的文件加载接口时传递额外的标记如`IMREAD_GRAYSCALE`以指示仅需载入亮度信息而不必关心颜色成分[^4]。不过对于实时流媒体源而言,推荐采用前一种方案即捕捉后即时变换的方法。 值得注意的是,尽管最终呈现给用户的图像是单通道形式,但在某些情况下原始采集的数据可能仍保留三个相同的强度分量直到显式执行过降维指令为止[^3]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值