首先將原圖轉換成灰度圖,然後利用blur函數對圖像進行模糊並以此來降噪,然後用canny函數進行邊緣檢測。
#include<opencv2/opencv.hpp>
// OpenCV圖像處理頭文件
#include<opencv2/imgproc/imgproc.hpp>
using namespace cv;
int main()
{
Mat srcImg = imread("1.jpg");
// 顯示原圖
imshow("原圖", srcImg);
Mat dstImg, edge, grayImg;
// 創建與srcImg同類型大小的矩陣
dstImg.create(srcImg.size(), srcImg.type());
// 將原圖轉換成灰度圖
cvtColor(srcImg, grayImg, CV_BGR2GRAY);
// 顯示灰度圖
imshow("灰度圖", grayImg);
// 使用3*3內核來進行降噪處理
blur(grayImg, edge, Size(3,3));
// Canny算子
Canny(edge, edge, 3, 9, 3);
// 顯示最終的結果
imshow("Canny邊緣檢測後", edge);
waitKey(6000);
return 0;
}
運行後的結果如下所示:
關於OpenCV和圖像處理以及模式識別更多的學習資料將繼續更新,敬請關注本博客。