// testOpencv14.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
const char* inWin = "input window";
const char* outWin = "output window";
Mat src, dst;
int main()
{
// std::cout << "Hello World!\n";
src = imread("E:/imageSources/3.jpg");
if (!src.data) {
printf("cannot load image,please check your code!");
return -1;
}
namedWindow(inWin, WINDOW_AUTOSIZE);
namedWindow(outWin, WINDOW_AUTOSIZE);
imshow(inWin,src);
//===========================robert=====================================//
robert算子 X轴方向
//Mat kernal_robert_X=(Mat_<int>(2,2) << 1,0,0,-1);
robert算子 Y轴方向
//Mat kernal_robert_Y = (Mat_<int>(2, 2) << 0, 1, -1, 0);
//filter2D(src,dst,-1, kernal_robert_X,Point(-1,-1),0.0);
//imshow(outWin,dst);
//filter2D(src, dst, -1, kernal_robert_Y, Point(-1, -1), 0.0);
//imshow("Robert_Y", dst);
//==========================sobel======================================//
Sobel算子 X轴方向
//Mat kernal_sobel_X=(Mat_<int>(3,3) << -1,0,1,-2,0,2,-1,0,1);
Sobel算子 Y轴方向
//Mat kernal_sobel_Y = (Mat_<int>(3, 3) << -1,-2,-1,0,0,0,1,2,1);
//filter2D(src,dst,-1, kernal_sobel_X,Point(-1,-1),0.0);
//imshow(outWin,dst);
//filter2D(src, dst, -1, kernal_sobel_Y, Point(-1, -1), 0.0);
//imshow("Y", dst);
//=======================Laplace Operator===============================//
Laplace算子
//Mat kernal_laplace = (Mat_<int>(3, 3) << 0, -1, 0, -1, 4, -1, 0, -1, 0);
//filter2D(src, dst, -1, kernal_laplace, Point(-1, -1), 0.0);
//imshow(outWin, dst);
//========================自定义模糊算子================================//
int c = 0;
int index = 0;
int kernalSize = 0;
while (true)
{
c = waitKey(500);
if ((char)c == 27) //按下ESC键
{
break;
}
kernalSize = 0 + (index % 5)*2 + 1 ;//一定要保证Kernal的值为单数
Mat kernalCustomalized = Mat::ones(Size(kernalSize, kernalSize), CV_32F) / (float)(kernalSize * kernalSize);
filter2D(src,dst,-1,kernalCustomalized,Point(-1,-1),0.0);
index++;
imshow(outWin, dst);
}
waitKey(0);
return 0;
}
(代码运行结果为动态模糊,即模糊程度逐渐加深,没有上传视频截取的图片)