1、打开一张图片并显示
cv::Mat img = cv::imread("D:/img/3333.jpg",-1);//读取一张图片
if(img.empty())return -1;
cv::namedWindow("aa", cv::WINDOW_AUTOSIZE);//在屏幕上打开一个窗口,窗口名aa
cv::imshow("aa",img);//(没创建窗口,会自动调用函数创建),窗口被重绘上要求的图片
cv::waitKey(0);//系统暂停并且等待键盘事件
cv::destroyyWindow("aa");//关闭窗口并释放掉相关联内存空间
2、打开并播放一条视频
cv::namedWindow("aa",cv::WINDOW_AUTOSIZE);
cv::VideoCapture cap; //此结构支持很多类型的ffmpeg视频文件
cap.open("D:/img/3333.mp4");//打开视频文件
cv::Mat frame;
for(;;){
cap >> frame;//读取一帧
if(frame.empty()) break;
cv::imshow("aa",frame);
if(cv::waitKey(33) >= 0) break;//等待33毫秒,有键盘事件将退出循环
}
3、高斯模糊以及降采样
cv::Mat img1, img2;
cv::namedWindow("aa",cv::WINDOW_AUTOSIZE);
img1 = cv::imread("D:/img/3333.jpg",-1);
cv::pyrDown(img1,img2);//其宽高为原始图像的一半
cv::imshow("aa",img2);
cv::waitKey(0);
4、图像简单处理
cv::Mat img_rgb, img_gry, img_cny;
cv::namedWindow("aa",cv::WINDOW_AUTOSIZE);
img_rgb = cv::imread("D:/img/3333.jpg",-1);
cv::cvtColor(img_rgb, img_gry, cv::COLOR_BGR2GRAY);//BGR图像转换为灰度图
cv::Canny(img_gry, img_cny, 10, 100, 3, true);//边缘检测器,检测图像内容物边缘
cv::imshow("aa",img_cny);
cv::waitKey(0);
5、图像像素点读取
cv::Mat img_rgb = cv::imread("D:/img/3333.jpg",-1);
int x = 16,y = 32;
cv::Vec3b intensity = img_rgb.at<cv::Vec3b>(y,x);
uchar blue = intensity[0];
uchar green = intensity[1];
uchar red = intensity[2];
cout << (unsigned int)red << " " << (unsigned int)blue << " " << (unsigned int)green << endl;
6、从视频流捕获帧的对象,并创建一个雪茹对象以便将帧输入到一个视频文件中
cv::namedWindow("aa",cv::WINDOW_AUTOSIZE);
cv::VideoCapture capture("D:/img/112233.mp4");
double fps = capture.get(cv::CAP_PROP_FPS);//获取帧数
cv::Size size(//图像的规格宽和高
(int)capture.get(cv::CAP_PROP_FRAME_WIDTH),
(int)capture.get(cv::CAP_PROP_FRAME_HEIGHT)
);
cv::VideoWriter writer;//创建一个视频写入对象
writer.open("D:/img/5555.mp4", cv::VideoWriter::fourcc('D','I','V','X'),fps,size);//图像编码(解码器),avi对应('M','J','P','G)
cv::Mat logpolar_frame, bgr_frame;
for(;;){
capture >> bgr_frame;
if(bgr_frame.empty()) break;
cv::logPolar(//转换为对数极坐标图像
bgr_frame,
logpolar_frame,
cv::Point2f(
bgr_frame.cols/2,
bgr_frame.rows/2
),
40,
cv::WARP_FILL_OUTLIERS
);
cv::imshow("aa",logpolar_frame);
writer << logpolar_frame;
char c = cv::waitKey(10);
if(c == 27) break;
}
capture.release();//关闭视频捕获