如題,我在不同或同一個程式中設定相同的引數執行膨脹、腐蝕兩個操作,但是兩次運行的結果不一樣,并且同一次運行的結果中不同影像之間的膨脹和腐蝕程度也不一樣,有哪位大神能解釋下這是為什么嗎?如何讓結果更穩定些呢?不勝感激~
uj5u.com熱心網友回復:
有人知道是為什么嗎 謝謝各位啦uj5u.com熱心網友回復:
原理上來說不應該像這樣不穩定,還是應該先檢查一下代碼引數是否有問題,參考一下http://www.cnblogs.com/tiandsp/archive/2013/04/20/3032763.html,看看執行結果是否一致。uj5u.com熱心網友回復:
我也遇到了,不知道怎么解決uj5u.com熱心網友回復:
我就是參考這篇文章進行膨脹腐蝕的,試了很多種引數設定確實是不穩定的....
uj5u.com熱心網友回復:
你試一下轉換成灰度圖或者二值圖,腐蝕膨脹原理上來說應該是針對二值圖的uj5u.com熱心網友回復:
輸入的圖就是灰度圖
uj5u.com熱心網友回復:
需要輸入的是二值反色圖Mat src = imread(image_name);
Mat m_bin;
cvtColor(src, m_bin, CV_BGR2GRAY);
threshold(m_bin, m_bin, 60, 255, CV_THRESH_BINARY_INV | CV_THRESH_OTSU);
Mat dst;
erode(m_bin, dst, Mat(5, 5, CV_8U), Point(-1, -1), 2);
imwrite("erode.jpg", dst);
dilate(m_bin, dst, Mat(5, 5, CV_8U), Point(-1, -1), 2);
imwrite("dilate.jpg", dst);
uj5u.com熱心網友回復:
理論上來說同一幅影像,同一套操作,必須一致。這種情況我一般會自己寫一個膨脹腐蝕的function或者再寫一分matlab版本的,然后對比每一個像素的計算是不是一樣咯。
uj5u.com熱心網友回復:
我也碰到了這個問題,同樣的引數在c++下處理每次都正常,但是在java下面每次結果都不一樣uj5u.com熱心網友回復:
找到解決方法了you don't initialize the kernel with any value... so it'll contain random values. So just: Mat kernal5 = new Mat(5, 5, CV_8U, 255); (or whatever the Java syntax is...) – Miki May 1 '17 at 19:18
uj5u.com熱心網友回復:
++
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/86584.html
標籤:機器視覺
上一篇:Mac OS系統升級
下一篇:神經網路目標檢測的幀率
