本文用于实战OpenCV3 imgproc模块的基本方法!!!
具体函数定义可参考OpenCV3 Library API参考网站,其中包括Python API和C++ API:
https://docs.opencv.org/3.0-beta/modules/refman.html
/* main.c */
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <vector>
#include <iostream>
using namespace std;
using namespace cv;
#define WINDOW_NAME "window"
int g_nThresholdValue = 100;
int g_nThresholdType = 3;
Mat g_thresholdImg, g_grayImg;
static void on_Threshold(int, void*);
int main(int *argc, int **argv)
{
Mat srcImg = imread("lena.jpg");
//1.线性滤波操作
Mat boxFilterImg, blurImg, GaussianBlurImg;
//方框滤波
boxFilter(srcImg, boxFilterImg, -1, Size(5, 5));
imshow("boxFilter", boxFilterImg);
//均值滤波
blur(srcImg, blurImg, Size(5, 5));
imshow("blur", blurImg);
//高斯滤波
GaussianBlur(srcImg, GaussianBlurImg, Size(5, 5), 0, 0);
imshow("GassianBlur", GaussianBlurImg);
//2.非线性滤波
Mat medianBlurImg, bilateralFilterImg;
//中值滤波
medianBlur(srcImg, medianBlurImg, 5);
imshow("medianBlur", medianBlurImg);
//双边滤波
bilateralFilter(srcImg, bilateralFilterImg, 5, 5 * 2, 5 / 2);
imshow("bilateraFilter", bilateralFilterImg);
//3.形态学滤波
Mat dilateImg, erodeImg, morphologyExImg;
Mat element = getStructuringElement(MORPH_RECT, Size(15, 15));
//膨胀操作
dilate(srcImg, dilateImg, element);
imshow("dilate", dilateImg);
//腐蚀操作
erode(srcImg, erodeImg, element);
imshow("erode", erodeImg);
//高级形态学操作,开运算、闭运算、形态学梯度、顶帽、黑帽(MORPH_BLACKHAT)
//通过设置不同的标识符选择不同的方法
morphologyEx(srcImg, morphologyExImg, MORPH_BLACKHAT, element);
imshow("MORPH_BLACKHAT", morphologyExImg);
//4.漫水填充
Rect rect;
Mat floodFillImg = srcImg.clone();
floodFill(floodFillImg, Point(100, 100), Scalar(10,