鋼管識別專案2

2021-09-07 01:14:52 字數 2132 閱讀 1161

鋼管識別專案2

一、需求

將「鋼管識別專案1」中識別出來的結果匯入csharp的gui中,通過手工輔助操作,對識別的結果進行修正。

二、初步分析

現在已經實現了影象處理的相關演算法,能夠自動處理影象得到上圖的結果,那麼下面需要做的就是

2.1)傳遞結果到csharp中去;

採用的方法是比較熟悉的"csharp呼叫dll檔案"方法。麻煩之處在於這裡的結果數量比較大,而且其大小不固定。所以我嘗試採用了「外檔案引數」的方法。

修改相關的**,使得能夠將所有圓的座標列印出來

//尋找被填充的部分

threshold(gray,thresh,

240,

250,thresh_otsu);

erode(thresh,thresh,mat());

erode(thresh,thresh,mat());

contours.clear();

selectcontours.clear();

for(

inti

=0;i

++)}

for(

inti

=0;i

++)}

}

//列印結果

fstream ftxt;

ftxt.open(

"c:/go_findtube_param.ini",ios

::out); 

//寫入的方式,覆蓋寫入

if(ftxt.fail())

for(

inti

=0;i

++)ftxt.close();

432.967 294.45 11.3052

461 290 10.949

571 288.5 11.3417

517.214 286.643 9.90404

88.7667 286.767 11.4066

627 287 11.5157

599.571 287.714 11.1538

537.269 284.86 12.7203

487.5 287 11.3417

395 285.5 10.617

257.093 288.093 11.6269

145.085 286.573 10.5136

311 286 11.7438 ……

匯入並且畫圓,結果看起來還不錯。裡面的誤差來自於數值轉化的時候的誤差,在本例中不是大問題。

2.2)座標統一化操作

本例的顯示和上面的圓的計算,都是和實際相一致的。實際運用中可能會出現在顯示的時候需要進行縮放的情況,這個時候,需要計算出縮放的比率,並且在最後畫圓的時候有所考慮。

2.3)編寫合適的介面處理**,使得互動工作能夠執行和達到效果。

能夠選中某乙個圓,並且刪除乙個圓

能夠建立乙個圓

小結:目前這種方法應該說是能夠解決一定問題的。而且由於目前使用winform通過dll呼叫opencv的方法也比較熟悉了,使用起來比較順手。

解決目前這個需求應該是問題不大了,更多的問題可能需要暈倒真實專案的時候來解決吧。

來自為知筆記(wiz)

鋼管識別專案2

鋼管識別專案2 一 需求 將 鋼管識別專案1 中識別出來的結果匯入csharp的gui中,通過手工輔助操作,對識別的結果進行修正。二 初步分析 現在已經實現了影象處理的相關演算法,能夠自動處理影象得到上圖的結果,那麼下面需要做的就是 2.1 傳遞結果到csharp中去 採用的方法是比較熟悉的 csh...

鋼管識別專案2

鋼管識別專案2 零 相關說明 一 需求 將 鋼管識別專案1 中識別出來的結果匯入csharp的gui中,通過手工輔助操作,對識別的結果進行修正。二 初步分析 現在已經實現了影象處理的相關演算法,能夠自動處理影象得到上圖的結果,那麼下面需要做的就是 2.1 傳遞結果到csharp中去 採用的方法是比較...

鋼管識別專案1

鋼管識別專案1 一 原始需求 二 初步分析 鋼管的特點是由於其是有深度的,這就造成了管子的內部形成乙個陰影。尋找並識別這個陰影,是解決問題的主要方法。同時需要注意到的一點是管子它本身的排列是有符合物理特性的,就是大體上要符合下圖的這種情況,這是個先驗知識。干擾在於這個陰影不僅是管子內部才有的,管子和...