二.使用OpenCv操纵摄像头采集一幅图像

树莓派+摄像头

用过树莓派的都知道,树莓派上有两个USB,可以接一个普通的摄像头进行实验。

从摄像头中采集一副图像:

#include <stdio.h>
#include <stdlib.h>
#include <opencv/highgui.h>
#include <opencv/cv.h>

/*
用摄像头采集一帧图像,将图像设置为640*480,保存为test.jpg
*/

int main()
{
	IplImage* img;//图像结构体
	cvNamedWindow("Test", CV_WINDOW_AUTOSIZE);
	CvCapture* cam = cvCreateCameraCapture(0);//初始化摄像头,参数可以用0
	if(NULL == cam)
	{
		fprintf(stderr, "Can't init Camera!\n");
		return 1;
	}

	cvSetCaptureProperty(cam, CV_CAP_PROP_FRAME_WIDTH, 640);//设置图像属性 宽和高
	cvSetCaptureProperty(cam, CV_CAP_PROP_FRAME_HEIGHT,480);

	img = cvQueryFrame(cam);
	if(NULL == img)
	{
		fprintf(stderr, "Can't get a frame\n");
		return 1;
	}

	cvShowImage("Test", img);
	cvSaveImage("test.jpg", img, 0);

	cvWaitKey(0);
	cvReleaseImage(&img);
	cvDestroyWindow("Test");

	return 0;
}


解释:

第一步:初始化摄像头

      函数cvCreateCameraCapture(),返回一个结构体CvCapture指针(视频获取结构,获取视频、图像都要用到)

第二步:设置图形属性

      使用函数cvSetCaptureProperty(),CV_CAP_PROP_FRAME_WIDTH和CV_CAP_PROP_FRAME_HEIGHT

      代表图像的宽和高。

第三步:获取一帧图像

      使用cvQueryFrame(),参数是CvCapture指针

第四步:显示图像cvShowImage()

第五步:保存图像

      这里注意:不同版本的OpenCv貌似参数数目也不同,这里我用cvSaveImage(),百度一下可以知道这个函数有两个参数,分别是文件名,图像结构体指针,但是我用两个就编译出错,最后解决方法是最后加一个参数0就搞定了。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值