openCV3+VS2017学习笔记(二)

2018-11-29  本文已影响0人  whisper330

示例2-5 加载图像并且在显示之前用高斯平滑图像(P29)

      当我们建立了一个播放视频的小程序之后,我们还想对视频的每一帧进行处理,比如图像平滑,所以在前一篇的程序的基础之上做了一些改进。首先定义一个模糊图像函数,名为example2_5。

void example2_5(const cv::Mat&image) {

cv::namedWindow("example2_5-in", cv::WINDOW_AUTOSIZE);//新建两个窗口,一个存当前帧,一个存高斯模糊后的帧

cv::namedWindow("example2_5-out", cv::WINDOW_AUTOSIZE);

cv::imshow("example2_5-in", image);

cv::Mat out;

cv::GaussianBlur(image, out, cv::Size(5, 5), 3, 3);//高斯模糊,GaussianBlur(原图,处理后图像,模版大小,x方向标准差,y方向上标准差)

cv::GaussianBlur(out, out, cv::Size(5, 5), 3, 3);

cv::imshow("example2_5-out", out);

}

在主函数中的while循环里调用图像模糊程序    example2_5(frame);

运行结果如下。第一个图是上篇文章建立的视频播放窗口(example2_4),中间的图是本次建立的原图像显示窗口(example2_5-in),最后的图是模糊后图像的显示窗口(example2_5-out)。在两种播放模式下会同步显示。

示例2-6.7.8 一系列的图像操作,降采样(可用来构建尺度空间),转换为灰度图像,Canny边缘检测。(P30,31)

#include "pch.h"

#include "opencv2/opencv.hpp"

using namespace cv;

int main() {

Mat img1, img2, img3, img4;

namedWindow("1", WINDOW_AUTOSIZE);

namedWindow("2", WINDOW_AUTOSIZE);

namedWindow("3", WINDOW_AUTOSIZE);

namedWindow("4", WINDOW_AUTOSIZE);

img1 = imread("C:\\Users\\Administrator\\Pictures\\zi.jpg");

imshow("1", img1);

pyrDown(img1, img2);

imshow("2", img2);

cvtColor(img2, img3, COLOR_BGR2GRAY);//把彩色图像转化为灰度图像

imshow("3", img3);

Canny(img3, img4, 10, 150, 3);//Canny边缘检测算子,用法:Canny(原图,边缘图,最低阈值,最高阈值,sobel算子大小)

imshow("4", img4);

waitKey(0);

return 0;

}

运行结果如下。

附上Canny边缘检测算子的相关知识链接

opencv官方帮助文件(用法)                    http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/imgproc/imgtrans/canny_detector/canny_detector.html

csdn优秀博文(原理详解):https://blog.csdn.net/fengye2two/article/details/79190759

上一篇下一篇

猜你喜欢

热点阅读