基於OpenCv的金屬表面劃痕檢測

2021-08-07 03:40:32 字數 1316 閱讀 6668

//原始檔:

在實際應用中,得到的影象的閾值不太理想時通過固定閾值分割很難得到所要提取的特徵,因此halcon中

含有動態閾值分割法,即首先對影象進行均值濾波,然後與現有影象最差後進行閾值分割。該方法適合比較

小的特徵提取,例如金屬表面的劃痕、絲網的漏洞等。

本例提取絲網上漏洞區域以及漏洞數量,主要步驟如下:

1.對讀入的影象進行動態閾值分割,分割出blob區域。

2.利用面積對blob區域進行選擇。

3.顯示檢測結果。

對下圖的長短劃痕進行檢測,結果如圖所示

//劃痕檢測

void checkscratch()

} mat element15(3, 3, cv_8u, scalar::all(1));

mat close;

morphologyex(drawing, close, morph_close, element15);

imshow("drawing", drawing);

waitkey(0);

vector> contours1;

vectorhierarchy1;

imshow("close", close);

waitkey(0);

j = 0;

int m = 0;

for (int i = 0; i < contours1.size(); i++)

else if (area >= 0 && area <= 50)

}char t[256];

sprintf_s(t, "%01d", j);

string s = t;

string txt = "long ng : " + s;

puttext(image, txt, point(20, 30), cv_font_hershey_complex, 1,

scalar(0, 0, 255), 2, 8);

sprintf_s(t, "%01d", m);

s = t;

txt = "short ng : " + s;

puttext(image, txt, point(20, 60), cv_font_hershey_complex, 1,

scalar(255, 0, 0), 2, 8);

imwrite("c:\\users\\tony\\desktop\\result.bmp", image);

}

基於Opencv的SIFT SURF HOG的實現

sift實現 surf的實現 include include includeusing namespace std using namespace cv using namespace cv xfeatures2d int main int argc,char ar namedwindow inpu...

基於opencv的meanshift演算法的初步學習

meanshift 均值漂移。其核心是利用概率密度的梯度來找到區域性最優。影象上用,其實現過程就是在乙個給定的範圍,一直按要求 靠近重心的方向 迭代直到達到預期效果。由於本人以後碩士階段做影象識別和跟蹤方面的研究,索性在目標跟蹤上進一步學習。在opencv2.3中這樣定義 cvapi int cvm...

基於Opencv的MeanShift跟蹤演算法實現

include cv.h include highgui.h include include iplimage image 0,hsv 0,hue 0,mask 0,backproject 0,histimg 0 用hsv中的hue分量進行跟蹤 cvhistogram hist 0 直方圖類 int...