Python open CV kamera açılmıyor

EnderTR52

Hectopat
Katılım
8 Eylül 2020
Mesajlar
3.104
Makaleler
2
1652438041222.png

Üstte gösterdiğim gibi bu kodu yazdım ve kameranın açılıp benim yüzümü tanıması gerekiyor ancak aşağıdaki sorunu veriyor. Sebebi nedir?
 
Son düzenleyen: Moderatör:
Problem kamerayı açmaması değil gibi duruyor. 24. satırda bir hata var o yüzden kamerayı açacak kadar çalışmıyor.
 
Kodun fotografini telefonla siyah beyaz filtre kullanarak cekip gonderirsen daha rahat anlasilir. Biraz kontrast sorunu oluyor bu sekilde.
 
Kodu paylaşabilirsen bir göz atayım dostum.
Kod:
import cv2



faceCascade = cv2.CascadeClassifier("haarcascade_frontalface.default.xml")

videoCapture = cv2.VideoCapture(0)

while True:
    ret, frame = videoCapture.read()

    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    faces = faceCascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30),
                                         flags=cv2.CASCADE_SCALE_IMAGE)


    for (x, y, w, h) in faces:
        cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)

    cv2.imshow("Video", frame)

    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

videoCapture.release()
cv2.destroyAllWindows()
Traceback (most recent call last):
File "C:\Users\BAKAN\PycharmProjects\proje\AAA\main.py", line 24, in <module>
Faces = faceCascade. DetectMultiScale(gray, scaleFactor=1.1, minNeighbors = 5, minSize=(30, 30),
CV2.error: OpenCV(4.5.5) D:\a\opencv-python\opencv-python\opencv\modules\objdetect\src\cascadedetect.cpp:1689: error: (-215: Assertion failed) !empty() in function 'cv::CascadeClassifier::detectMultiScale'

[ WARN:[email protected]] global D:\a\opencv-python\opencv-python\opencv\modules\videoio\src\cap_msmf.cpp (539) 'anonymous-namespace'::SourceReaderCB::~SourceReaderCB terminating async callback

Bu da hata.
 
Kodda herhangi bir hata yok, 5. satırdaki cascade dosyasını indirip kodun olduğu klasöre atmadığınız için fonksiyonu çalıştıramıyor.
Github - Opencv Haar Cascades
Yukarıda bulunan linkten işinize yarayacak olan dosyayı indirip klasöre atarsanız problemsiz çalışacaktır.
 
Şimdi sorun haarcascade_frontalface.default.xml dosyasının bulanamamasından kaynaklı.

Çözüm adımları şu şekilde olacak;
Öncelikle CMD üzerinden Python'un kurulu olduğu dosyayı buluyoruz [where python].

1652461840920.png


Dizini bulduktan sonra sonuna;
\Lib\site-packages\cv2\data\haarcascade_frontalface_default.xml
Ekliyoruz.
Şu şekle çevirin sonrasında;
"C:\Program Files\Python310\Lib\site-packages\cv2\data\haarcascade_frontalface_default.xml"

Sonrasında kodu şuna çevirin:
FaceCascade = CV2.CascadeClassifier(r"C:\...\haarcascade_frontalface.default.xml")
Kodda herhangi bir hata yok, 5. satırdaki cascade dosyasını indirip kodun olduğu klasöre atmadığınız için fonksiyonu çalıştıramıyor.
Github - Opencv Haar Cascades
Yukarıda bulunan linkten işinize yarayacak olan dosyayı indirip klasöre atarsanız problemsiz çalışacaktır.
CascadeClassifier fonksiyonu dosyayı python'un olduğu klasörde arar. Atsa da bulamaycaktır yol belirtmeli. (Yanlış Bİlgi Vermişim Dikkate Almayın)
 
Son düzenleme:
:D dediğim şekide problemsiz çalışıyor, baktım başka bir çözümü var mı diye, CV2'nin içerisinden de ulaşmaya çalışsa oluyormuş.

[CODE title="5. satırı bu şekilde yazsan yeterli oluyor"]faceCascade = cv2.CascadeClassifier(cv2.data.haarcascades+"haarcascade_frontalface_default.xml")[/CODE]
Ayrıca default'dan önce "." koymuşsun, "_" olmalıydı.
 

Yeni konular

Geri
Yukarı