1.QT安装和Opencv的搭建
Notice:
1. 为了匹配QT框架,需要重新编译Opencv的源码(3.4.5);
2. 需要在.pro文件中加:
#导入头文件
INCLUDEPATH+=D:\opencv\opencv345\opencv-build\install\include
#导入库文件
LIBS +=D:\opencv\opencv345\opencv-build\lib\libopencv_*.a
2. 常用的Opencv操作
#include<opencv2/opencv.hpp> /**********(1)创建Mat对象的三种方式***********/ // 1 Mat img(2,2,CV_8UC3,Scalar(0,255,255)); // 2 Mat img;img.create(4,4,CV_8UC(2)); // 3 Mat array = Mat::zeros(4,4,CV_8UC1); /**********(2)复制***********/ // 1 Mat clone; srcImg.copyTo(clone); // 2 Mat clone = srcImg.row(1).clone(); /**********(3)读图片***********/ Mat srcImg = imread("./1.jpg"); if(srcImg.data != NULL) { imshow("srcImg",srcImg); imwrite("./2.jpg",srcImg); waitKey(0); } /**********(4)打开视频***********/ cv::VideoCapture cap; cap.open(0); Mat edge; while(1) { Mat frame; cap >> frame; cvtColor(frame,edge,CV_BGR2GRAY); blur(edge,edge,Size(7,7)); Canny(edge,edge,0,30,0); imshow("Gauss Blur Video",edge); if(waitKey(30) >= 0) break; } /**********(5)打开设备摄像头,并录制视频,保存为.avi文件***********/ cv::VideoCapture cap; Mat frame; cap.open(0); VideoWriter out; string outputVideoPath = "D:\\opencv\\test.avi"; cv::Size sWH = cv::Size((int)cap.get(CV_CAP_PROP_FRAME_WIDTH), (int)cap.get(CV_CAP_PROP_FRAME_HEIGHT)); out.open(outputVideoPath, CV_FOURCC('M', 'J', 'P', 'G'), 50, sWH); if(out.isOpened()) { cout << "out Opened!"<<endl; } else{ cout << "out Opened failed!" <<endl; } if(!cap.isOpened()) { cout<<"Video load failed!"<<endl; return -1; } while(1) { cap >> frame; if(frame.empty()) { cout << "Video process finished!" << endl; return 0; } imshow("video",frame); if(waitKey(10) == 'q')break; out << frame; } cap.release();