日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

(_cai_) opencv学习笔记(1):图像形态学计算的方式 morphology函数的应用

發(fā)布時間:2024/1/1 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (_cai_) opencv学习笔记(1):图像形态学计算的方式 morphology函数的应用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.腐蝕

概述:腐蝕掉圖像的細節(jié)。若圖像有很多毛刺,通過腐蝕操作,可以將毛刺消除。

????????下面所說的“值”可以簡單理解為RGB三個通道[0,255],值越小,亮度越低,值越大,亮度越高。

????????我們首先定義了一個3*3的矩陣作為,我們不關心矩陣的值,只關心他的大小。在圖像中用核選中3*3的像素塊,若像素塊中的值相差很大(我們可以將其想象成邊界),值大的像素點會被值小的像素點給取代。這種計算操作對于圖像的邊緣是極為敏感的。

函數(shù):erode(cv::InputArray src, cv::OutputArray dst, cv::InputArray kernel)

參數(shù):在腐蝕操作中,我們主要關注以下三個參數(shù)。另一些關于邊界填充的參數(shù)這里不做介紹。

1.cv::InputArray src輸入圖像
2.OutputArray dst輸出圖像
3.InputArray kernel

核:n*n的矩陣。n越大,腐蝕的越厲害

代碼:?

#include <iostream> #include <opencv.hpp> #include <core/core.hpp> #include <highgui/highgui.hpp>using namespace cv; using namespace std;int main() {Mat image_1 = imread("lena.jpg");Mat res;//定義一個3*3大小的方形核Mat element = getStructuringElement(MORPH_RECT, Size(3, 3));erode(image_1,res,element);imshow("lena", image_1);imshow("res",res);waitKey(0);return 0; }

輸出結(jié)果:可以注意到很多毛刺都變得更加細,或者被消除。

2.膨脹

概述:與腐蝕相反,膨脹后的圖片會將放大圖像的細節(jié)。

????????其實原理和腐蝕原理一樣。所說的“值”可以簡單理解為RGB三個通道[0,255],值越小,亮度越低,值越大,亮度越高。

????????我們首先定義了一個3*3的矩陣作為,我們不關心矩陣的值,只關心他的大小。在圖像中用核選中3*3的像素塊,若像素塊中的值相差很大(我們可以將其想象成邊界),值小的像素點會被值大的像素點給取代。也就是亮度高的像素點會被放大取代亮度低的背景像素點。

函數(shù):dilate(cv::InputArray src, cv::OutputArray dst, cv::InputArray kernel)

參數(shù):在膨脹操作中,我們也只關注以下三個參數(shù)。

1.cv::InputArray src輸入圖像
2.OutputArray dst輸出圖像
3.InputArray kernel

核:n*n的矩陣。n越大,腐蝕的越厲害

代碼:?

#include <iostream> #include <opencv.hpp> #include <core/core.hpp> #include <highgui/highgui.hpp>using namespace cv; using namespace std;int main() {Mat image_1 = imread("lena.jpg");Mat res;//定義一個3*3大小的方形核Mat element = getStructuringElement(MORPH_RECT, Size(3, 3));dilate(image_1,res,element);imshow("lena", image_1);imshow("res",res);waitKey(0);return 0; }

輸出結(jié)果:第一眼看,圖像變得更加模糊。但是仔細觀察會發(fā)現(xiàn),一些噪聲點(白點),發(fā)絲等細節(jié)被放大。

3.開運算

?概述:先對圖像進行腐蝕,再對圖像進行膨脹。

函數(shù):形態(tài)學計算(開運算、閉運算、梯度運算、禮帽、黑帽)等操作均使用該函數(shù)。

cv::morphologyEx(cv::InputArray src, cv::OutputArray dst, int op, cv::InputArray kernel,)

參數(shù):我們關注以下四個參數(shù)。

1.cv::InputArray src輸入圖像
2.OutputArray dst

輸出圖像

3.int op

形態(tài)操作類型(MORPH_OPEN )

4.InputArray kernel

核:n*n的矩陣。n越大,腐蝕的越厲害

代碼:

#include <iostream> #include <opencv.hpp> #include <core/core.hpp> #include <highgui/highgui.hpp>using namespace cv; using namespace std;int main() {Mat image_1 = imread("lena.jpg");Mat res;//定義一個3*3大小的方形核Mat element = getStructuringElement(MORPH_RECT, Size(3, 3));morphologyEx(image_1,res,MORPH_OPEN,element);imshow("lena", image_1);imshow("res",res);waitKey(0);return 0; }

輸出結(jié)果:

4.閉運算

概述:先對圖像進行膨脹,再對圖像進行腐蝕。

函數(shù):形態(tài)學計算(開運算、閉運算、梯度運算、禮帽、黑帽)等操作均使用該函數(shù)。

cv::morphologyEx(cv::InputArray src, cv::OutputArray dst, int op, cv::InputArray kernel,)

參數(shù):我們關注以下四個參數(shù)。

1.cv::InputArray src輸入圖像
2.OutputArray dst

輸出圖像

3.int op

形態(tài)操作類型(MORPH_CLOSE)

4.InputArray kernel

核:n*n的矩陣。n越大,腐蝕的越厲害

代碼:

#include <iostream> #include <opencv.hpp> #include <core/core.hpp> #include <highgui/highgui.hpp>using namespace cv; using namespace std;int main() {Mat image_1 = imread("lena.jpg");Mat res;//定義一個3*3大小的方形核Mat element = getStructuringElement(MORPH_RECT, Size(3, 3));morphologyEx(image_1,res,MORPH_CLOSE,element);imshow("lena", image_1);imshow("res",res);waitKey(0);return 0; }

輸出結(jié)果:

5.梯度運算

概述:通過對腐蝕和膨脹的理解,我們可以認識到由于邊界上色彩的差異很大,所以導致腐蝕和膨脹在邊界區(qū)域的影響很大。簡單化理解就是腐蝕是腐蝕邊界上的細節(jié),膨脹也是放大邊界的細節(jié),兩者相減,就可以算出圖像的邊界信息。

代碼:

#include <iostream> #include <opencv.hpp> #include <core/core.hpp> #include <highgui/highgui.hpp>using namespace cv; using namespace std;int main() {Mat image_1 = imread("lena.jpg");Mat res;//定義一個3*3大小的方形核Mat element = getStructuringElement(MORPH_RECT, Size(3, 3));morphologyEx(image_1,res,MORPH_GRADIENT,element);imshow("lena", image_1);imshow("res",res);waitKey(0);return 0; }

輸出結(jié)果:

6.禮帽與黑帽

概述:禮帽運算=原始圖像-開運算生成的圖像

?代碼:

#include <iostream> #include <opencv.hpp> #include <core/core.hpp> #include <highgui/highgui.hpp>using namespace cv; using namespace std;int main() {Mat image_1 = imread("lena.jpg");Mat res;//定義一個3*3大小的方形核Mat element = getStructuringElement(MORPH_RECT, Size(3, 3));morphologyEx(image_1,res,MORPH_TOPHAT,element);imshow("lena", image_1);imshow("res",res);waitKey(0);return 0; }

輸出結(jié)果:

概述:禮帽運算=閉運算生成的圖像-原始圖像

?代碼:

#include <iostream> #include <opencv.hpp> #include <core/core.hpp> #include <highgui/highgui.hpp>using namespace cv; using namespace std;int main() {Mat image_1 = imread("lena.jpg");Mat res;//定義一個3*3大小的方形核Mat element = getStructuringElement(MORPH_RECT, Size(3, 3));morphologyEx(image_1,res,MORPH_BLACKHAT,element);imshow("lena", image_1);imshow("res",res);waitKey(0);return 0; }

輸出結(jié)果:

總結(jié)

以上是生活随笔為你收集整理的(_cai_) opencv学习笔记(1):图像形态学计算的方式 morphology函数的应用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。