2016-03-18 16 views
0

Otonom robotumun kamera beslemesinden gelen bir trafik ışığını filtrelemeye çalışıyorum. Yakalanan kareleri HSV renk uzayına dönüştürürüm, trafik ışığı gibi kabaca "kırmızı" olan tüm kırmızı nesneleri algılayana kadar onları eşleştirin, sonra aralarında kırmızı ışığı bulmak için Hough dönüşümü uygularım daire). Hough dönüşümü için HSV'yi Gri Tonlamalı olarak dönüştürmek

Şimdi burada sorun ben Hough sadece tek kanal görüntülerle çalışır dönüşümü ve Üç numarayla çalışıyor gibi görünüyor, bu yüzden HSV aşağıdaki Kodunuzu

imgFinal = thresholded #initialising the variable with the thresholded image. 
framenew = cv2.cvtColor(threshNew, cv2.COLOR_HSV2GRAY) 
kullanarak Griskala görüntüyü eşiklenir dönüştürerek çalıştı bulundu olmasıdır

Ancak, çalışma zamanında 'modül' nesnesinin 'COLOR_HSV2GRAY' özelliğine sahip olmadığını belirten bir hata alıyorum. Bu konuyla ilgili birçok soru buldum ama hiçbiri benim sorunumun cevabı değildi. Sadece kırmızı trafik ışığını tespit etmek zorundayım, kanalları ayırmayı denedim ama bu yaklaşıma nasıl devam edeceğime dair hiçbir fikrim yok. Başka herhangi bir yaklaşıma da açığım.
Teşekkür ederiz!

P.S- Bu konuyla ilgili olabilir, ancak bu proje için önereceğiniz dil hangisidir? C++ veya Python? Her ikisinin de kodunu yazdım, sadece hangisinin kullanılacağı konusunda kafam karıştı. Şu anda Windows 8.1 PC'imde geliştiriyorum ama son proje için Raspberry Pi 3'te çalışması gerekiyor.

+0

genellikle V kanalını gri tonlamalı görüntü olarak kullanırsınız, afaik. – Micka

+0

Kanalların nasıl bölüneceğinden emin değil misiniz? Eğer öyleyse, şuna bakın: http://stackoverflow.com/questions/6699374/access-to-each-separate-channel-in-opencv. Eğer yeterince hızlı olursa Python'u kullanırdım. – IanB

+0

@IanB C++ 'da ve kodumla çalışmalıyım (şu anda test edemiyorum). Ancak kanalları saklamak için değişkenler Matris olarak ilan edildi, bunu Python'da nasıl yapabilirim? Her iki dil için de kod yazmayı planlıyorum ve daha iyi çalışan bir deneyle bulmayı planladım. –

cevap

1

HSV'nin V kanalı gri tonlamalı bir görüntü gibi bir şeydir, ancak bir BGR2GRAY grascale görüntüsüyle özdeş değildir.

Bu BGR2GRAY bir gri tonlama görüntü hesaplanır:

enter image description here

bu HSV görüntünün V kanalı ise:

enter image description here

Bir şeyin "daha iyi" gerekiyorsa, HSV görüntüsünü her zaman BGR'ye dönüştürebilir ve BGR'yi openCV kodları ile GRAY'e dönüştürebilirsiniz.

+0

Tam olarak Gri Tonlamalı bir görüntüye ihtiyacım yok, sadece Eşek HSV görüntüsünün bir türüne ihtiyacım var, böylece Hough dönüşümü ile kullanılabilir. HSV'yi BGR'ye ve ardından Gri Tonlamalı'ya dönüştürmeyi ve geri göndermeyi deneyeceğim. –

+0

Merhaba! Görüntüyü HSV'den BGR'ye dönüştürmeyi denedim. Derleme sırasında hata yok ama çalıştırdığım zaman çözümüm kilitleniyor (C++ kodu, Windows masaüstü için Visual Studio Express 2012'de yapılmıştır) –

+0

giriş resminizi ve kodunuzu HSV'ye nasıl dönüştürdüğünüzü ve nasıl dönüştürmeyi denediğinizi BGR'ye – Micka

İlgili konular