OpenCV控制摄像头实现 拍照功能
来源:互联网 发布:java趣味编程题 编辑:程序博客网 时间:2024/06/08 13:09
注意注释部分,其中使用的比较生疏的 API 包括
以及
下面就来一一解释这几个 API 的具体使用:
void
其中 src 为 CvArr * 类型,这里顺便解释一下 OpenCV 基本上是用 C 实现的,当然其中包括一定的 C++ 成分,
但是 OpenCV 中仍然也使用了面向对象的思想,即有以下的继承关系:
所以在实际使用当中,完全可以使用 ”子类” CvMat 或者是 IplImage 来代替 CvArr ,
也就是说在参数中完全可以传入一个 IplImage 类型,
src 代表的就是源图像,即传入函数的图像,而 dst 则是输出图像,即缩放一倍后的图像,
但是需要注意的是,在这里传入的 dst 图像必须是在初始化以后才能传入,
对于这一点,在下面的 Demo 中可以看到。而至于卷积滤波器的类型则一般采用默认类型即可。
CvCapture*
大伙应该还记得
其实对于
而对于
初始化以后,便可以从这个摄像设备中获取视频了。
至于参数 index 的话,如果您的电脑上连接了多个摄像设备,则需要通过这个
void
这个函数的作用是拷贝一个数组到另一个数组,而根据前面的继承关系,IplImage
而 CvMat 又是继承于
很明显,src 是传入的数组,而 dst 则是复制完成后返回的结果数组,
而至于 mask 这个数组呢,比较变态,
它指定了数组 src 中哪些元素需要拷贝到 dst 数组中,哪些元素不能够拷贝到 dst 数组中,
mask 数组中标记为非 0 的则可以拷贝到 dst 中,标记为 0 的则不会拷贝到 dst 数组当中去。
这里需要注意的是,dst 数组和 src 数组必须是相同的类型,并且具有相同的维数和大小,否则整个程序会崩溃。
int
这个函数的作用很明显,即保存图片到文件,而至于保存的图片的文件则看
- #include
"stdafx.h" - #include"cv.h"
- #include"highgui.h"
- #include"stdio.h"
-
-
- //
实现将拍下来的图片缩放一倍 - IplImage*
DoPyrDown(IplImage* intimage, filter = IPL_GAUSSIAN_5x5) - {
-
设置大小缩小一倍 -
CvSize size = cvSize(image->width / 2,image->height / 2); -
-
IplImage* outImage = cvCreateImage(size,image->depth,image->nChannels); -
-
cvPyrDown(image,outImage); -
cvReleaseImage(&image); -
outImage; - }
-
-
- int
main( intargc, char**argv) - {
-
cvNamedWindow( -
CvCapture* capture; -
首先是要通过摄像设备来得到一个CvCapture对象 -
== argc) -
{ -
capture = cvCreateCameraCapture(0); -
} -
-
{ -
capture = cvCreateCameraCapture(atoi(argv[1])); -
} -
-
assert(NULL != capture); -
-
IplImage* frame; -
-
keyCode; -
每隔30ms捕捉一次视频图像 -
可以设为while(1) 使得实时捕捉视频画面 -
= cvWaitKey(30))) -
{ -
-
== 27) -
{ -
-
} -
-
-
== 13) -
{ -
-
IplImage* outImage = cvCreateImage(cvGetSize(frame),frame->depth,frame->nChannels); -
将原图拷贝过来 -
cvCopy(frame,outImage,NULL); -
-
outImage = DoPyrDown(outImage); -
-
outImageName "test.jpg";= -
-
cvSaveImage(outImageName,outImage); -
cvReleaseImage(&outImage); -
printf( 恭喜你,保存图片成功!\n" ); -
} -
-
得到摄像设备的下一帧图像 -
frame = cvQueryFrame(capture); -
-
{ -
-
} -
cvShowImage( -
} -
-
cvReleaseImage(&frame); -
cvDestroyAllWindows(); -
0; - }
F5执行结果:
本文参考:http://www.cnblogs.com/BoyXiao/archive/2010/10/27/1862928.html
- OpenCV控制摄像头实现 拍照功能
- OpenCV控制摄像头实现 拍照功能
- OpenCV控制摄像头实现拍照
- OpenCV控制摄像头实现拍照
- OpenCV控制摄像头实现拍照
- OpenCV控制摄像头实现拍照
- Qt下openCV实现摄像头拍照功能
- QT +openCV 实现摄像头采集以及拍照功能
- QT +openCV 实现摄像头采集以及拍照功能
- QT +openCV 实现摄像头采集以及拍照功能
- QT +openCV 实现摄像头采集以及拍照功能
- Qt: QT + openCV 实现摄像头采集以及拍照功能
- python+opencv打开摄像头,保存视频、拍照功能的实现
- 第一篇,关于Qt4+opencv实现打开摄像头和拍照功能(整理更正版)
- 实现利用摄像头进行拍照的功能
- C#操作摄像头 实现拍照功能
- C#操作摄像头 实现拍照功能
- 实现asp程序调用摄像头并控制摄像头进行拍照
- thread pool
- 多表查询(章节摘要)
- C#中求任意个数的最大值 使用params关键字
- Hello World!
- poi导出excel时,合并单元格后,求和不正确,即“假”合并
- OpenCV控制摄像头实现 拍照功能
- POJ1009
- 错排公式
- elasticsearch手动控制分片分布
- 添加samba用户
- Asterisk Dialplan 之 Read()和SayDigits()命令详解
- 工厂方法与建造者
- Windows消息机制要点
- Ubuntu 14.04桌面环境登录后冻结