Merhaba Python’da openCV kullanarak bir proje yapmaya çalışıyorum. Yüz algılayınca ses kaydı çalıştırmasını istiyorum. Bana kısa bir örnek yazarak yardımcı olabilecek var mı?
Tabi yardımcı olalım.
Yüzü nerede algılasın? fotoğrafta, kamerada?
Ses kaydı çalıştırsın derken?
Önceden kaydedilen bir sesi mi çalmasını istiyorsun yoksa mikrofon açıp ses kaydetmeye mi başlasın?
önceden kaydedilen bir sesin çalışmasını istiyorum. kameradanda algılamasını istiyorum
Adım adım anlatalım.
Face Detection using Python and OpenCV with webcam - GeeksforGeeks
Bu linkteki kodları incele.
Sonra beraber bir kod yazalım.
Yapman gereken tek şey çerçeve çizdiği koda bir ses çalma kodu eklemek.
Endişelenme her adımda eşlik edip kodu yazarız.
Önce kameranı kullanmayı dene.
Koddaki örneklerle sonra o koda, ses çalmak için bir kod ekleriz.
Opencv kurmayı bildiğini, python a eklemeyi bildiğini varsayıyorum.
Bunlarda da sorunun olursa beraber adım adım bakarız.
Aslında kod bütün işi kendi yapıyor. Çok fazla yoracak bir şey yok.
Ama biraz üzerinde düşünmeni isediğimden link verdim. Elimde hazır kodlar var birini ekleyip geçebilirdim.
Senle iletişime geçebileceğim bir discord hesabın varmı
Birebir çalışmıyorum. Burada sorabilirsin. Böylece kodları herkesle paylaşırız.
Elimde yüz algılayan bir kodum var. Ben buna ses çalma kodu eklemek istiyorum.
Benim de elimde basit kodlar var.
import cv2
# Enable camera
cap = cv2.VideoCapture(0)
cap.set(3, 640)
cap.set(4, 420)
# import cascade file for facial recognition
faceCascade = cv2.CascadeClassifier(cv2.data.haarcascades + "haarcascade_frontalface_default.xml")
while True:
success, img = cap.read()
imgGray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# Getting corners around the face
faces = faceCascade.detectMultiScale(imgGray, 1.3, 5) # 1.3 = scale factor, 5 = minimum neighbor
# drawing bounding box around face
for (x, y, w, h) in faces:
img = cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 3)
cv2.imshow('face_detect', img)
if cv2.waitKey(10) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyWindow('face_detect')
Bu kadarcık kodla yüz algılayabilirsin.
Zaten.
cv2.rectangle satırının altına bir tane ses eklemen yeterli.
Tabi kendi kodunu paylaşmak istersen ona da bakabiliriz.
Bu kodu da adım adım anlatabilirim, sen nasıl istersen.
Kodu deneyeceğim şimdiden teşekürler.
müzik çalmak için de,
import playsound
playsound.playsound('sample.mp3', False)
Bu da arka plana şarkıyı atar.
Sadece bir kez çaldırmak için bir değişken tutarsın.
Her çerçeve yakaladığında çalmasın diye.
Hepsi bu.
Şimdi denedim fakat şöyle bir hata veriyor. [ WARN:0@2.183] global D:\a\opencv-python\opencv-python\opencv\modules\videoio\src\cap_msmf.cpp (539) `anonymous-namespace’::SourceReaderCB::~SourceReaderCB terminating async callback
cap = cv2.VideoCapture(0)
yazan yeri;
cv2.VideoCapture(0, cv2.CAP_DSHOW)
şeklinde değiştir.
Hangi opencv sürümü, hangi python sürümü kullandığınla alakalı bir durum.
Kusura bakma senide yoruyorum ama bu sefer başka bir hata verdi. openCV sürümüm:4.5.5
Traceback (most recent call last):
File “c:\Users\arda\Desktop\ilk_porje\demo.py”, line 15, in
imgGray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.error: OpenCV(4.5.5) D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function ‘cv::cvtColor’
Sisteminde tanımlı bir kamera var mı?
İşletim sistemin ne?
Kullanıcı yetkilerin yeterli mi?
Şu anda kamerana ulaşamadığı için, açamıyorsun.
ip kamera kullanıyorum.
winows.
ilk başta ses çalma komudu yazmadan önce kameramı açıyordu. bu yüzden yetkilerin yeterli olduğunu düşünüyorum.
Ses çalma kodunu eklemeden önceki hali derken?
Kodu nasıl ekledin görebilir miyim?
import cv2
import playsound
Enable camera
cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)
cap.set(3, 640)
cap.set(4, 420)
import cascade file for facial recognition
faceCascade = cv2.CascadeClassifier(cv2.data.haarcascades + “haarcascade_frontalface_default.xml”)
while True:
success, img = cap.read()
imgGray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# Getting corners around the face
faces = faceCascade.detectMultiScale(imgGray, 1.3, 5) # 1.3 = scale factor, 5 = minimum neighbor
# drawing bounding box around face
for (x, y, w, h) in faces:
img = cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 3)
playsound.playsound('Kayıt.mp3', False)
cv2.imshow('face_detect', img)
if cv2.waitKey(10) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyWindow(‘face_detect’)
Kodunda her sonsuz döngüde her çerçeve çizdiğinde müzik çalmaya çalışmışsın.
Ben de ilk verdiğim kod çalışmadı sandım.
Şöyle düşün.
Sadece ilk bulduğunda bir kez müziği başlatsın.
Bu şekilde for döngüsü içinde sürekli şarkı açar.
Biraz çözüme odaklan çözemezsen kodu ekleyeyim.
Yukardaki hata bununlamı alakalı. yoksa benim openCV sürümümlemi alakalı (kodu verme).
Her ikisi ile de alakalı olabilir. Ama öncelikle mantıksal hataları düzeltmek gerekir.
İlk hali ile çalışıyorsa, sürüm sorunu çözüldü demektir.
İkinci adımda sesi yanlış yere ekledi isen, kaynağa yada kameraya ulaşmasını engelliyorsun demektir.
Kodu veririm sorun değil, ben de senle beraber adım adım inceliyorum.
Sadece müzik çalma kodunun yerini ve çalışma şeklini biraz incelemelisin.