目錄
網(wǎng)站設(shè)計制作過程拒絕使用模板建站;使用PHP+MYSQL原生開發(fā)可交付網(wǎng)站源代碼;符合網(wǎng)站優(yōu)化排名的后臺管理系統(tǒng);成都網(wǎng)站設(shè)計、網(wǎng)站制作收費(fèi)合理;免費(fèi)進(jìn)行網(wǎng)站備案等企業(yè)網(wǎng)站建設(shè)一條龍服務(wù).我們是一家持續(xù)穩(wěn)定運(yùn)營了10年的創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司。【1】邊緣檢測算法流程
【2】Canny算子介紹
【3】完整代碼
具體算法流程可以參考該文章:
【2】Canny算子介紹https://zhuanlan.zhihu.com/p/494567705
void Canny( InputArray image, OutputArray edges,
double threshold1, double threshold2,
int apertureSize = 3, bool L2gradient = false );
具體參數(shù)介紹:
第一個參數(shù),InputArray類型的image,輸入圖像,即源圖像,填Mat類的對象即可,可以為三通道彩色圖像,也可以是單通道的灰度圖像。
第二個參數(shù),OutputArray類型的edges,輸出的邊緣圖,是單通道的邊緣圖像。
第三個參數(shù),double類型的threshold1,第一個滯后性閾值。
第四個參數(shù),double類型的threshold2,第二個滯后性閾值。
Canny采用倆個閾值,根據(jù)邊緣響應(yīng)的灰度圖,大于高閾值的為強(qiáng)邊緣,小于低閾值的為弱邊緣,介于強(qiáng)弱邊緣的值采用搜索算法。在8個領(lǐng)域內(nèi)是否存在強(qiáng)邊緣,如果存在強(qiáng)邊緣,則該點(diǎn)就可以設(shè)置為強(qiáng)邊緣。
第五個參數(shù),int類型的apertureSize,表示應(yīng)用Sobel算子的孔徑大小,其有默認(rèn)值3。
第六個參數(shù),bool類型的L2gradient,一個計算圖像梯度幅值的標(biāo)識,有默認(rèn)值false。
#include#include#includeusing namespace cv;
using namespace std;
int main(int argc,char** argv)
{
//載入原始圖
Mat src = imread("E:\\喬大花進(jìn)度\\11-28\\邊緣檢測\\2.jpg");
Mat src1 = src.clone();
Mat src2(src.size(),CV_8UC1);
//第一種直接使用邊緣檢測canny算法
//blur(src2,src2,Size(3,3));
Canny(src,src2,150,180);
imshow("邊緣檢測1",src2);
//第二種高階邊緣檢測算法,轉(zhuǎn)為灰度圖,降噪,用Canny得到最后的邊緣作為掩碼,轉(zhuǎn)到原圖得到效果圖,得到色彩的邊緣圖
Mat dst, edge, gray;
//【1】創(chuàng)建與src同類型和大小的矩陣(dst)
dst.create(src1.size(),src1.type());
//【2】將彩色圖轉(zhuǎn)為灰度圖
cvtColor(src1,gray,COLOR_BGR2GRAY);
//【3】先使用3x3的內(nèi)核用來降噪
blur(gray,edge,Size(3,3));
//【4】運(yùn)行canny算法
Canny(edge, edge, 3, 9);
//【5】將dst中的像素都置為0
dst = Scalar::all(0);
//【6】與edge為掩碼,將src2復(fù)制到dst中
src1.copyTo(dst,edge);
//【7】顯示效果圖
imshow("邊緣檢測2",dst);
//顯示原始圖
imshow("原圖",src);
waitKey(0);
system("pause");
destroyAllWindows();
return 0;
}
運(yùn)行結(jié)果:
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧