查看完整版本: 寫Labeling演算遇到型別轉換的問題
頁: [1]

龍謙 發表於 2017-4-22 10:13 PM

寫Labeling演算遇到型別轉換的問題

本帖最後由 龍謙 於 2017-4-22 10:15 PM 編輯

●【題目名稱】:
寫Labeling演算遇到型別轉換的問題。

●【目前問題】:
各位大大晚安,小弟最近處理的案子需要用到標籤化(Labeling),但由於那個案子用的平台是vs 2008及opencv 2.3.1,所以沒有標籤化的函式,所以小弟需要自己寫一個,但是,為了確保標籤化有成功,所以我用了vs 2015,因為vs 2015有一個外掛軟體叫image watch,可以看圖片每個pixel的值,而且image watch有許多不錯的功能,所以小弟開發一些影像處理的函式都用它。小弟打算在vs2015上開發完再貼到vs 2008的程式上。

小弟參考了這篇文章:http://blog.csdn.net/icvpr/article/details/10259577
裡面是使用Mat寫出標籤化的函式,但小弟手上的案子是接續離職的同事的案子,離職的同事整支程式都是用IplImage,所以我要改成IplImage的版本。小弟有成功寫出了文章中Mat的標籤化演算法了,在改成IplImage的時候,出現一些問題:
1.我用image watch看LabelingImg中的像素時,像素的值完全沒被改變。
2.我將該像素上方的像素及左邊的像素加入監看式,該像素的上方的像素,值會突然變很大,會變65535或是其他值;該像素的左邊的像素值會變-1,這個問題是一定會發生,但發生的行數及列數不一定。此問題小弟的猜測是型別轉換上有問題,但小弟試過各種轉型的方式,都無法解決。

p.s. Binary_AG_Img是輸入的圖,必需為二值化後的圖,值只有0及255;LabelingImg是要輸出的標籤化後的圖。
下面這張是我測試的圖:
http://www78.eyny.com/forum.php?mod=image&aid=118511871&size=300x300&key=d57fea18ad6cf37d5537d2b3f589b98d&nocache=yes&type=fixnone

●【編譯環境】:
visual studio 2015
open cv 3.1

●【目前程式碼】:  

void Labeling(IplImage* Binary_AG_Img, IplImage* LabelingImg)
{
        /* LabelingImg's depth must be IPL_DEPTH_16U!! */
        if (Binary_AG_Img->...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><div></div>
頁: [1]