【OpenCV学习笔记】2:开启摄像头和对捕获到的图像的处理
来源:互联网 发布:刘嘉玲被强奸知乎 编辑:程序博客网 时间:2024/05/18 02:01
以前有些过于循序渐进了,很浪费时间,以后代码注解尽量写在注释里,简明清晰。
开启摄像头
#include "cv.h" //opencv核心函数库#include "highgui.h" //GUI函数库//主方法(注意在VS下的形参表)int main(int argc, char** argv) { //创建窗口(窗口名,窗口属性标志) //int cvNamedWindow(const char* name, int flags=CV_WINDOW_AUTOSIZE); cvNamedWindow("win"); //CvCapture结构体,用来保存图像捕获的信息 //cvCreateCameraCapture(int index);初始化从摄像头中获取视频,只有一个摄像头时索引号取0 CvCapture* capture = cvCreateCameraCapture(0); //IplImage是表示一个图像的结构体 IplImage* frame; //在死循环中 while (1) { //cvQueryFrame从摄像头或者文件中抓取一帧,然后解压并返回这一帧 frame = cvQueryFrame(capture); //抓取失败时返回值为NULL //失败常是因摄像头索引号不对或刚初始化就抓取帧(摄像头启动需要时间) if (NULL==frame) break; //抓取失败就退出吧 //在指定窗口中显示图像(已创建的窗口名,被显示的图像) //void cvShowImage( const char* name, const CvArr* image ); cvShowImage("win", frame); //当delay小于等于0的时候,如果没有键盘触发,则一直等待,此时的返回值为-1 //否则返回值为键盘按下的码字 //当delay大于0时,如果没有键盘的的触发,则等待delay毫秒,此时的返回值是-1 //否则返回值为键盘按下的码字 //int cvWaitKey( int delay=0 ); char c = cvWaitKey(50); //如果返回值为27(ESC的ASCII码) if (c == 27) break;//退出循环 } //cvReleaseCapture:释放CvCapture结构开辟的内存空间 cvReleaseCapture(&capture); //cvDestroyWindow:销毁一个指定名称的窗口 cvDestroyWindow("win"); return 0;}
原图->灰度图->二值化
#include "cv.h"#include "highgui.h"int main(int argc, char** argv) { //创建窗口(窗口名,窗口属性标志) cvNamedWindow("捕获的原图"); cvNamedWindow("转灰度图后"); cvNamedWindow("再二值化后"); //CvCapture结构体,用来保存图像捕获的信息 CvCapture* capture = cvCreateCameraCapture(0); //IplImage是表示一个图像的结构体 IplImage* frame; while (true) { /**----摄像头->原图----**/ //抓取并返回一帧 frame = cvQueryFrame(capture); //抓取失败 if (NULL==frame) break; /**----灰度图和二值化图的空间开辟----**/ //创建图像分配存储空间(图像尺寸,图像深度,通道数); //IplImage* cvCreateImage(CvSize cvSize(int width, int height), int depth, int channels); //这里IPL_DEPTH_8U是8位无符号整数 IplImage *dst_grey = cvCreateImage(cvGetSize(frame), IPL_DEPTH_8U, 1); IplImage *dst_binary = cvCreateImage(cvGetSize(frame), IPL_DEPTH_8U, 1); /**----原图->灰度图----**/ //颜色空间转换(输入图像,输出图像,转换码); //void cvCvtColor( const CvArr* src, CvArr* dst, int code ); //这里 CV_BGR2GRAY是从RGB转灰度图 cvCvtColor(frame, dst_grey, CV_BGR2GRAY); /**----灰度图->二值化----**/ //对单通道数组应用固定阈值操作(输入图像,输出图像,阈值,最大值,阈值类型); //void cvThreshold( const CvArr* src, CvArr* dst, double threshold, double max_value, int threshold_type ); //这里CV_THRESH_OTSU则函数会使用OTSU大律法寻找阈值,不再用自己写的阈值120 cvThreshold(dst_grey, dst_binary, 120, 255, CV_THRESH_OTSU); /**----在指定窗口中显示图像----**/ cvShowImage("捕获的原图", frame); cvShowImage("转灰度图后", dst_grey); cvShowImage("再二值化后", dst_binary); //等50ms或有按键 char c = cvWaitKey(50); //按ESC时退出 if (c == 27) { //释放空间 cvReleaseImage(&dst_binary); cvReleaseImage(&dst_grey); break; } } //释放空间 cvReleaseImage(&frame); cvReleaseCapture(&capture); //销毁全部窗口 cvDestroyAllWindows(); return 0;}
阅读全文
1 0
- 【OpenCV学习笔记】2:开启摄像头和对捕获到的图像的处理
- OpenCV学习笔记 利用MFC的Picture控件显示图像+播放视频和捕获摄像头画面 .
- OpenCV学习笔记 利用MFC的Picture控件显示图像+播放视频和捕获摄像头画面
- OpenCV学习笔记(9)利用MFC的Picture控件显示图像+播放视频和捕获摄像头画面
- OpenCV学习笔记(9)利用MFC的Picture控件显示图像+播放视频和捕获摄像头画面
- OpenCV学习笔记(9)利用MFC的Picture控件显示图像+播放视频和捕获摄像头画面
- OpenCV学习笔记(9)利用MFC的Picture控件显示图像+播放视频和捕获摄像头画面
- OpenCV学习 利用MFC的Picture控件显示图像+播放视频和捕获摄像头画面
- OpenCV学习笔记(2)-----开启摄像头
- OpenCV学习笔记:基本的图像处理
- 像素级的图像处理---opencv.2学习笔记1
- opencv学习笔记(九)捕获摄像头的视频并保存成avi格式
- vim+python+OpenCV学习三 : 对图像的像素处理
- Opencv对图像做腐蚀和膨胀处理的结果
- OpenCV 学习记录2 图像简单处理及调用摄像头
- OpenCV 2 学习笔记(8): 利用邻域处理图像与简单的算术图像处理算法:图像滤波与加权和
- 基于V4L2+OPENCV的摄像头采集与图像处理方案
- 基于V4L2+OPENCV的摄像头采集与图像处理方案
- linux tenserflow add traning picture dataset to TFRecord
- 服务器Svn 冲突解决
- 树状数组
- HDU 1878 欧拉回路 (使用并查集~)
- LeetCode#22. Generate Parentheses
- 【OpenCV学习笔记】2:开启摄像头和对捕获到的图像的处理
- Linux五种I/O模型
- 欢迎使用CSDN-markdown编辑器
- 代码之外_教你做坏人
- 我的Java课程学习5——猜数字游戏
- 写给自己的JAVA工程师之路-接口
- 从0开始写一个 SGX
- 输出希腊字母表
- 一道有意思的笔试题引发的对于new操作符的思考