OpenCV快速上手的7个程序
本篇文章主要介绍了四个OpenCV图像处理小程序、OpenCV操作视频和调用摄像头。本文的示例程序清单如下:
1.1 OpenCV的测试用例:HelloOpenCV
#include <opencv2/opencv.hpp> using namespace cv; int main() { Mat img = imread("1.jpg"); imshow("【载入的图片】", img); waitKey(6000); }
运行示例
1.2 ShowImage
#include <opencv2/opencv.hpp> //头文件 using namespace cv; //包含cv命名空间 void main() { Mat srcImage = imread("1.jpg"); imshow("【原始图】", srcImage); waitKey(0); }
运行示例:
1.3 ImageErode
#include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> using namespace cv; int main() { //载入原图 Mat srcImage = imread("1.jpg"); //显示原图 imshow("【原图】腐蚀操作", srcImage); //进行腐蚀操作 Mat element = getStructuringElement(MORPH_RECT, Size(15, 15)); Mat dstImage; erode(srcImage, dstImage, element); //显示效果图 imshow("【效果图】腐蚀操作", dstImage); waitKey(0); return 0; }
运行示例:
1.4 BlurImage
#include "opencv2/highgui/highgui.hpp" #include "opencv2/imgproc/imgproc.hpp" using namespace cv; int main() { //【1】载入原始图 Mat srcImage = imread("1.jpg"); //【2】显示原始图 imshow("均值滤波【原图】", srcImage); //【3】进行均值滤波操作 Mat dstImage; blur(srcImage, dstImage, Size(7, 7)); //【4】显示效果图 imshow("均值滤波【效果图】", dstImage); waitKey(0); }
运行示例:
1.5 Canny
#include <opencv2/opencv.hpp> #include<opencv2/imgproc/imgproc.hpp> using namespace cv; int main() { //【0】载入原始图 Mat srcImage = imread("1.jpg"); //工程目录下应该有一张名为1.jpg的素材图 imshow("【原始图】Canny边缘检测", srcImage); //显示原始图 Mat dstImage, edge, grayImage; //参数定义 //【1】创建与src同类型和大小的矩阵(dst) dstImage.create(srcImage.size(), srcImage.type()); //【2】将原图像转换为灰度图像 //此句代码的OpenCV2版为: //cvtColor( srcImage, grayImage, CV_BGR2GRAY ); //此句代码的OpenCV3版为: cvtColor(srcImage, grayImage, COLOR_BGR2GRAY); //【3】先用使用 3x3内核来降噪 blur(grayImage, edge, Size(3, 3)); //【4】运行Canny算子 Canny(edge, edge, 3, 9, 3); //【5】显示效果图 imshow("【效果图】Canny边缘检测", edge); waitKey(0); return 0; }
运行示例
1.6 PlayVideo
#include <opencv2\opencv.hpp> using namespace cv; int main() { //【1】读入视频 VideoCapture capture("1.avi"); //【2】循环显示每一帧 while (1) { Mat frame;//定义一个Mat变量,用于存储每一帧的图像 capture >> frame; //读取当前帧 imshow("读取视频", frame); //显示当前帧 waitKey(30); //延时30ms } return 0; }
运行示例
1.7 UseCamera
#include <opencv2\opencv.hpp> using namespace cv; int main() { //【1】从摄像头读入视频 VideoCapture capture(0); //【2】循环显示每一帧 while (1) { Mat frame; //定义一个Mat变量,用于存储每一帧的图像 capture >> frame; //读取当前帧 imshow("读取视频", frame); //显示当前帧 waitKey(30); //延时30ms } return 0; }
运行示例
参考文献
[1] 毛星云.OpenCV3编程入门[M].电子工业出版社.北京.2015.2.
【zlc】