2011-06-03 24 views
6

başarısız:OpenCV, kenar algılama aşağıdaki parametrelerle kullanarak OpenCV Sobel kenar algılama yapıyorum OpenCV

cv.Sobel(mat, edgemat, 1, 1) 
# mat -> source image 
# edgemat -> taget output image 
# 1 -> xorder (int) – Order of the derivative x 
# 1 -> yorder (int) – Order of the derivative y 
# apertureSize (int) – Size of the extended Sobel kernel -> its by default set to 3 

Ben de GIMP kullanarak görüntü üzerinde Sobel kenar algılama yaptı.

kaynak görüntüdür: Source image opencv çıkış GIMP'de çıkış GIMP output

olan openCV output neden opencv ve Gimp'inkinden çıkışları arasında bu kadar büyük bir fark vardır. GIMP tarafından üretilen çıktı kalitesi, açık yıllar boyunca açık yılları geride bırakıyor.

+0

openCV, gerçek zamanlı bilgisayar görüşü olarak tanımlanır. OpenCV'nin çalışma zamanı GIMP ile nasıl karşılaştırılır? –

cevap

9

Basit yanıt: Yanlış yapıyorsunuz. Bkz. the documentation - yaptığınız şey görüntünün d^2/(dx dy) türevini hesaplamaktır - yani "yatay kenarlar dikey olarak nasıl değişir" (veya eşdeğeri, "dikey kenarlar yatay olarak nasıl değişir"), yani dikey veya Yatay kenar, sıfırın bir çıktısını beklersiniz (çünkü ona dik yön değiştirmez). Yani, senin opencv hattında ne yapıyorsun, hiç bir kenar algılama değil. Muhtemelen 1, 0 ile sobel gibi bir parametre ve 0, 1 gibi bir şey isteyebilir, daha sonra bu sonuçları kare haline getirebilir ve bunları ekleyebilir, daha sonra sonucun karekökünü alabilirsiniz. Bu, GIMP'in yaptığı gibi bir şeye yol açabilir.

+1

İşaret ettiğin için teşekkürler. :) – Xolve