一、彩色圖像轉(zhuǎn)灰度
Opencv提供了一個方法,可以使彩色圖像變?yōu)榛叶葓D像。
函數(shù)名:cvtColor(src,dest,way);
src表示初始的mat對象;
dest表示轉(zhuǎn)換后的mat對象;
way表示以何種方式轉(zhuǎn)換。
舉個例子:
int main()
{
//定義路徑
string path = "Resources//test.png";
//Mat:opencv引入的矩陣數(shù)據(jù)類型,處理所有圖像
Mat img = imread(path);
//創(chuàng)建一個新的mat對象,用來存放轉(zhuǎn)換后的灰度圖像
Mat imgGray;
//灰度轉(zhuǎn)換函數(shù)
cvtColor(img, imgGray, COLOR_BGR2GRAY);
//展示圖片,并給圖片取名
imshow("Image", img);
//延遲,直到我們按下關(guān)閉按鈕
imshow("ImageGray", imgGray);
waitKey(0);
return 0;
}
這里的方法就是COLOR_BGR2GRAY,
解釋出來就是:RGB顏色to灰度。
運行截圖:
![](/d/20211017/9d972e6413201e9f4574497840597c97.gif)
二、高斯模糊
高斯模糊本質(zhì)上是低通濾波器,輸出圖像的每個像素點是原圖像上對應(yīng)像素點與周圍像素點的加權(quán)和。
函數(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);
運行截圖:
![](/d/20211017/0777a3dacd2d94f4e659fa8391c1160c.gif)
三、邊緣檢測
我們有很多邊緣檢測器,用于檢測圖像的邊緣輪廓。
最常用的是坎尼邊緣檢測器。
Canny(src,dest,low,high);
檢測前通常做模糊處理。
兩個閾值:雙閾值篩選
設(shè)置一個雙閾值,即低閾值(low),高閾值(high)。
灰度變化大于high的,設(shè)置為強邊緣像素,低于low的,剔除。
//坎尼邊緣檢測器
Mat imgCanny;
//檢測前通常做模糊處理
//兩個閾值:雙閾值篩選
//設(shè)置一個雙閾值,即低閾值(low),高閾值(high)。
//灰度變化大于high的,設(shè)置為強邊緣像素,低于low的,剔除。
Canny(imgBlur, imgCanny, 50, 150);
imshow("ImageCanny", imgCanny);
運行截圖:
![](/d/20211017/62e44c1083ca73f161e5fa37fe59feb4.gif)
閾值為25,75:
![](/d/20211017/ac460be3727c8f567ade7e6a89b3d4f3.gif)
到此這篇關(guān)于OpenCV實現(xiàn)灰度、高斯模糊、邊緣檢測的示例的文章就介紹到這了,更多相關(guān)OpenCV 灰度、高斯模糊、邊緣檢測內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- python使用opencv實現(xiàn)馬賽克效果示例
- Opencv+Python實現(xiàn)圖像運動模糊和高斯模糊的示例
- opencv實現(xiàn)圖片模糊和銳化操作
- OpenCV3.3+Python3.6實現(xiàn)圖片高斯模糊
- 超詳細注釋之OpenCV實現(xiàn)視頻實時人臉模糊和人臉馬賽克