OpenCV實現(xiàn)灰度、高斯模糊、邊緣檢測的示例
一、彩色圖像轉灰度
Opencv提供了一個方法,可以使彩色圖像變?yōu)榛叶葓D像。
函數(shù)名:cvtColor(src,dest,way);
src表示初始的mat對象;
dest表示轉換后的mat對象;
way表示以何種方式轉換。
舉個例子:
int main() { //定義路徑 string path = "Resources//test.png"; //Mat:opencv引入的矩陣數(shù)據(jù)類型,處理所有圖像 Mat img = imread(path); //創(chuàng)建一個新的mat對象,用來存放轉換后的灰度圖像 Mat imgGray; //灰度轉換函數(shù) cvtColor(img, imgGray, COLOR_BGR2GRAY); //展示圖片,并給圖片取名 imshow("Image", img); //延遲,直到我們按下關閉按鈕 imshow("ImageGray", imgGray); waitKey(0); return 0; }
這里的方法就是COLOR_BGR2GRAY,
解釋出來就是:RGB顏色to灰度。
運行截圖:
二、高斯模糊
高斯模糊本質(zhì)上是低通濾波器,輸出圖像的每個像素點是原圖像上對應像素點與周圍像素點的加權和。
函數(shù):GaussianBlur(src,dest,size(m,n),sigma1,sigma2);
高斯模糊,第三,第四,第五參數(shù)為高斯模糊的度數(shù)。
定義內(nèi)核大小為m*n,數(shù)字越大越模糊;
然后有sigma1和sigma2,這兩個數(shù)也是模糊度數(shù)的參數(shù),可定義為0。
//創(chuàng)建一個模糊對象 Mat imgBlur; //高斯模糊,第三,第四,第五參數(shù)為高斯模糊的度數(shù), //定義內(nèi)核大小為7*7,數(shù)字越大越模糊; //然后有sigma1和sigma2,這兩個數(shù)可定義為0 GaussianBlur(img, imgBlur, Size(7, 7),0,0); imshow("ImageBlur", imgBlur); waitKey(0);
運行截圖:
三、邊緣檢測
我們有很多邊緣檢測器,用于檢測圖像的邊緣輪廓。
最常用的是坎尼邊緣檢測器。
Canny(src,dest,low,high);
檢測前通常做模糊處理。
兩個閾值:雙閾值篩選
設置一個雙閾值,即低閾值(low),高閾值(high)。
灰度變化大于high的,設置為強邊緣像素,低于low的,剔除。
//坎尼邊緣檢測器 Mat imgCanny; //檢測前通常做模糊處理 //兩個閾值:雙閾值篩選 //設置一個雙閾值,即低閾值(low),高閾值(high)。 //灰度變化大于high的,設置為強邊緣像素,低于low的,剔除。 Canny(imgBlur, imgCanny, 50, 150); imshow("ImageCanny", imgCanny);
運行截圖:
閾值為25,75:
到此這篇關于OpenCV實現(xiàn)灰度、高斯模糊、邊緣檢測的示例的文章就介紹到這了,更多相關OpenCV 灰度、高斯模糊、邊緣檢測內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
詳解PyCharm+QTDesigner+PyUIC使用教程
這篇文章主要介紹了詳解PyCharm+QTDesigner+PyUIC使用教程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-06-06