2012-04-03 207 views
0

所以我有一個已經用sobel方法處理過的圖像,現在我需要提取該圖像。使用emgu cv掃描圖像

我的問題是我如何開始掃描圖像從中線uo和逐行逐行,並且當邊數少於60時,記錄該座標以裁剪圖像。

有問題的圖像是條形碼,並且此方法只適用於僅提取條形圖。問題是用emgu cv實現。

更新:

我下面本文介紹的方法:http://bit.ly/HUWdcy

這個問題指涉到C.圖像提取章

回答

0

檢查cv::thresholdcv::reduce功能。

首先創建一個二進制映射出你的邊緣圖像,條紋上有黑色,背景上有白色。

喜歡這個小例如:閾

0 255 0 0 255 255 255 0 
0 255 0 0 255 255 255 0 
0 255 0 0 255 255 255 0 
0 255 0 0 255 255 255 0 
0 255 0 0 255 255 255 0 
0 255 0 0 255 255 255 0 
0 255 0 0 255 255 255 0 
可以使用

第二功能爲 「項目」 其維度之一的圖像,使用CV_MAX

後邊緣

1 70 0 0 85 128 99 0 
1 70 0 0 85 128 99 0 
1 70 0 0 85 128 99 0 
1 70 0 0 85 120 99 0 
1 74 0 0 85 138 99 0 
1 80 0 0 85 128 99 0 
1 72 0 0 85 128 99 0 

後,或者CV_SUMCV_AVG,並且您將條碼存儲在一行中

reduce

例子:

0 1785 0 0 1785 1785 1785 0 

現在,重新申請一個門檻:

0 1 0 0 1 1 1 0 
+0

感謝您的回答,但我現在的問題是找到PF代碼中的邊緣,我也做了形象如上面的文章中所提到的那樣進行處理,然後將sobel算子應用於圖像。現在看代碼邊緣,我認爲我可以從圖像的中間上下移動,並檢查像素是否相等,對於我知道它們以101開頭和結尾的邊,但是在讀取像素時,我不會收到這樣的東西,只是很多0,然後1. – celsoap7 2012-04-05 00:58:59

+0

和我看到你的答案,你已經考慮代碼,沒有背景,並使用減少方法把矩陣只在一個向量,我的問題是,我無法在我的項目中執行reduce方法,例如cvinvoke.cvreduce(...)和img.reduce(...)不起作用,我所提供的參數是錯誤的,如果您可以幫助會很好。 – celsoap7 2012-04-05 01:04:10

+0

@ celsoap7我沒有時間沒有代碼欄的經驗來幫助你。我希望這是一個開始,我邀請你加深學習和嘗試。 – Sam 2012-04-05 05:31:12