使用OpenCV可以对彩色原始图像进行基本的处理,涉及到5个常用的处理:
test.png
如下所示:示例代码如下:
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
/ Basic OpenCV Functions
int main()
{
std::string imgPath = "Resources/test.png";
//std::string imgPath = "images/lena.jpg";
cv::Mat imgSrc;
cv::Mat imgGray, imgBlur, imgCanny, imgDilate, imgErode;
imgSrc = cv::imread(imgPath); // 读取原图像
cvtColor(imgSrc, imgGray, COLOR_BGR2GRAY); // 将原图转换成灰度图
// 高斯模糊算法
GaussianBlur(imgSrc, imgBlur, Size(3, 3), 3, 0);
// Canny边缘检测算法
Canny(imgBlur, imgCanny, 25, 75);
// dilate and erode - 膨胀和腐蚀
Mat kernel = getStructuringElement(MORPH_RECT, Size(3, 3));
dilate(imgCanny, imgDilate, kernel); // 膨胀图
erode(imgDilate, imgErode, kernel); // 腐蚀化
cv::imshow("Image Source", imgSrc); // 显示原图
cv::imshow("Image Gray", imgGray); // 显示灰度图
cv::imshow("Image Gaussian Blur", imgBlur); // 显示高斯模糊处理后的图像
cv::imshow("Image Canny Detect", imgCanny); // 显示Canny边缘检测后的图像
cv::imshow("Image Dilation", imgDilate); // 膨胀
cv::imshow("Image Erode", imgErode); // 腐蚀
cv::waitKey(0);
return 0;
}
在VS2017
中运行结果如下图所示: