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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

图像形态学(opencv),运行后通过在屏幕上输入对应指令完成相对应的形态学方法。

發(fā)布時間:2023/11/27 生活经验 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图像形态学(opencv),运行后通过在屏幕上输入对应指令完成相对应的形态学方法。 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

圖像形態(tài)學(xué)

1、開操作(MORPH_OPEN

結(jié)果圖類似腐蝕圖

先腐蝕后膨脹的過程,開操作可以幫助消除圖像中的小的干擾區(qū)域,并且在平滑較大物體的邊界的同時不明顯改變其面積。

2、閉操作(MORPH_CLOSE

結(jié)果圖類似膨脹圖

先膨脹后腐蝕的過程,閉操作可以幫助消除圖像中的小的封閉區(qū)域。

3、形態(tài)學(xué)梯度(MORPH_GRADIENT

膨脹圖與腐蝕圖之差,可以用形態(tài)學(xué)梯度來保留物體的邊緣輪廓。

4、頂帽(MORPH_TOPHAT

原圖像與開運(yùn)算的結(jié)果圖之差,因?yàn)殚_運(yùn)算會放大局部低亮度區(qū)域,因此效果圖會突出比原輪廓周圍更亮的區(qū)域。

5、黑帽(MORPH_BLACKHAT

原圖像與閉運(yùn)算的結(jié)果圖之差,因?yàn)殚]運(yùn)算會放大局部高亮度區(qū)域,因此效果圖會突出比原輪廓周圍更暗的區(qū)域,可以得到原圖的輪廓。

6、morphologyEX函數(shù)

MORPH_OPEN – 開運(yùn)算(Opening operation

? ? ? ? ? MORPH_CLOSE – 閉運(yùn)算(Closing operation)

? ? ? ? ? MORPH_GRADIENT -形態(tài)學(xué)梯度(Morphological gradient)

? ? ? ? ? MORPH_TOPHAT - “頂帽”(“Top hat”)

? ? ? ? ? MORPH_BLACKHAT - “黑帽”(“Black hat“)

//自定義核

Mat?element = getStructuringElement(MORPH_ELLIPSE, Size(f * 2 + 1, f * 2 + 1));

//進(jìn)行形態(tài)學(xué)操作

morphologyEx(src, dst2, MORPH_CLOSE, element);

相關(guān)程序

運(yùn)行后通過在屏幕上輸入對應(yīng)指令完成相對應(yīng)的形態(tài)學(xué)方法。

#include<opencv2/opencv.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<vector>
#include<time.h>
#include<opencv2/core/core.hpp>
#include <iostream>
using namespace cv;
using namespace std;
//--------------------------------------【main( )函數(shù)】-----------------------------------------
//          描述:控制臺應(yīng)用程序的入口函數(shù),我們的程序從這里開始執(zhí)行
//-------------------------------------------------------------------------------------------------Mat src = imread("D:\\VC\\c++\\opencv源碼\\opencv源碼\\2.jpg");
Mat dst, dst1, dst2, dst3, dst4, dst5, dst6;
int p = 3;//膨脹初始值
int f = 4;//腐蝕初始值
int k = 3;//開運(yùn)算初始值
int b = 3;//閉運(yùn)算初始值
int x = 3;//形態(tài)學(xué)梯度初始值
int d = 3;//頂帽初始值
int h = 3;//黑帽初始值//膨脹回調(diào)函數(shù)
void on_p(int, void*)
{Mat element = getStructuringElement(MORPH_RECT, Size(p * 2 + 1, p * 2 + 1));morphologyEx(src, dst,MORPH_DILATE, element);imshow("膨脹圖", dst);}//腐蝕回調(diào)函數(shù)
void on_f(int, void*)
{//自定義核Mat element1 = getStructuringElement(MORPH_RECT, Size(f * 2 + 1, f * 2 + 1));//進(jìn)行形態(tài)學(xué)操作morphologyEx(src, dst1, MORPH_ERODE, element1);imshow("腐蝕圖", dst1);
}//開運(yùn)算回調(diào)函數(shù)
void on_k(int, void*)
{Mat element2 = getStructuringElement(MORPH_RECT, Size(k * 2 + 1, k * 2 + 1));morphologyEx(src, dst2, MORPH_OPEN, element2);imshow("開運(yùn)算圖", dst2);
}//閉運(yùn)算回調(diào)函數(shù)
void on_b(int, void*)
{Mat element3 = getStructuringElement(MORPH_RECT, Size(b * 2 + 1, b * 2 + 1));morphologyEx(src, dst3, MORPH_CLOSE, element3);imshow("閉運(yùn)算圖", dst3);
}//形態(tài)學(xué)梯度回調(diào)函數(shù)
void on_x(int, void*)
{Mat element4 = getStructuringElement(MORPH_RECT, Size(x * 2 + 1,x * 2 + 1));morphologyEx(src, dst4, MORPH_GRADIENT, element4);imshow("形態(tài)學(xué)梯度圖", dst4);
}//頂帽回調(diào)函數(shù)
void on_d(int, void*)
{Mat element5 = getStructuringElement(MORPH_RECT, Size(d * 2 + 1, d * 2 + 1));morphologyEx(src, dst5, MORPH_TOPHAT, element5);imshow("頂帽圖", dst5);
}//黑帽回調(diào)函數(shù)
void on_h(int, void*)
{Mat element6 = getStructuringElement(MORPH_RECT, Size(h* 2 + 1, h* 2 + 1));morphologyEx(src, dst6,MORPH_BLACKHAT, element6);imshow("黑帽圖", dst6);
}void print()
{cout << "******0:膨脹*********************" << endl;cout << "******1:腐蝕*********************" << endl;cout << "******2:開運(yùn)算*******************" << endl;cout << "******3:閉運(yùn)算*******************" << endl;cout << "******4:形態(tài)學(xué)梯度***************" << endl;cout << "******5:頂帽*********************" << endl;cout << "******6:黑帽*********************" << endl;cout << "******7:退出系統(tǒng)*****************" << endl;cout << "注意:進(jìn)行其他指令請擦除上一個指令的圖像" << endl;
}int main()
{print();cout << "————————————————" << endl;while (1){int method;cout << "*****請輸入形態(tài)學(xué)方法************" << endl;cin >> method;if (method == 0){//膨脹namedWindow("膨脹圖");createTrackbar("內(nèi)核值", "膨脹圖", &p, 20, on_p);on_p(p, 0);waitKey(0);}if (method == 1){//腐蝕namedWindow("腐蝕圖");createTrackbar("內(nèi)核值", "腐蝕圖", &f, 20, on_f);on_f(f, 0);waitKey(0);}if (method == 2){//開運(yùn)算namedWindow("開運(yùn)算圖");createTrackbar("內(nèi)核值", "開運(yùn)算圖", &k, 20, on_k);on_k(k, 0);waitKey(0);}if (method == 3){//閉運(yùn)算namedWindow("閉運(yùn)算圖");createTrackbar("內(nèi)核值", "閉運(yùn)算圖", &b, 20, on_b);on_b(b, 0);waitKey(0);}if (method == 4){//形態(tài)學(xué)梯度運(yùn)算namedWindow("形態(tài)學(xué)梯度圖");createTrackbar("內(nèi)核值", "形態(tài)學(xué)梯度圖", &x, 20, on_x);on_x(x, 0);waitKey(0);}if (method == 5){//頂帽運(yùn)算namedWindow("頂帽圖");createTrackbar("內(nèi)核值", "頂帽圖", &d, 20, on_d);on_d(d, 0);waitKey(0);}if (method ==6){//黑帽運(yùn)算namedWindow("黑帽圖");createTrackbar("內(nèi)核值", "黑帽圖", &h, 20, on_h);on_h(h, 0);waitKey(0);}if (method == 7){return 0;break;}}return 0;
}

?

?

?

?

?

?

?

?

總結(jié)

以上是生活随笔為你收集整理的图像形态学(opencv),运行后通过在屏幕上输入对应指令完成相对应的形态学方法。的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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