Normal ide’de hata vermiyor hiç. hata sayfasını txt olarak belirledim görüntülemek için. raspberry boot olarak terminal’den otomatik çalıştırınca opencv’nin cascade yolunu görmediği görünüyor hatada.
faceCascade = cv2.CascadeClassifier(“haarcascade_frontalface_default.xml”)
bu kısım ve mixer.music.load(‘beeplow.mp3’) bu kısımdaki dosya yollarını bulamadığını söylüyor hatada.
Benim dosya yolum /home/pi/robot/ bu yolu hepsine tek tek eklesem olur mu ne dersiniz?
Yada tüm bu mp3, cascade xml vb. dosyalara kodun en başında dosyanın yolunu gösterme felan gibi kolay bir yol varsa çok iyi olur.
hata verince de hiç bir boot yönteminde devam etmiyor program.
https://www.tutorialspoint.com/python/os_chdir.htm
import os
os.path.abspath(" /home/pi/robot/")
Bilmiyorum ama bu os kodu ve yukarıdaki bulma yolunu başa eklesem düzelir mi?
video_capture = cv2.VideoCapture(0)
video_capture.set(3,300)
video_capture.set(4,300)
minW = 0.1*video_capture.get(3)
minH = 0.1*video_capture.get(4)
font = cv2.FONT_HERSHEY_SIMPLEX
faceCascade = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")
panServo = 305
tiltServo = 205
pwm.set_pwm(pan, 0, panServo)
def cam(panServo,tiltServo):
while True:
ret, img = video_capture.read()
img = cv2.flip(img, +1)
cv2.imwrite('sonyeniyuz.jpg', img)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = faceCascade.detectMultiScale(
img,
scaleFactor=1.1,
minNeighbors=30,
minSize=(10, 30)
)
for (x, y, w, h) in faces:
cv2.rectangle(img, (x, y), (x+w, y+h), (225, 0, 0), 1)
if x>=1 and x<=71:
if tiltServo!=220:
panServo=panServo-1
pwm.set_pwm(pan, 0, panServo)
elif x>=200 and x<=350:
if tiltServo!=320:
panServo=panServo+1
pwm.set_pwm(pan, 0, panServo)
if y>=1 and y<=80:
if tiltServo!=255:
tiltServo = tiltServo+1
pwm.set_pwm(tilt, 0, tiltServo)
elif y>=120 and y<=350:
if tiltServo!=150:
tiltServo = tiltServo-1
pwm.set_pwm(tilt, 0, tiltServo)
cv2.imshow('frame',img)
def dinle(sorgu):
r = sr.Recognizer()
r.energy_threshold = 1000
r.pause_threshold = 1
m = sr.Microphone(sample_rate = 16000,chunk_size = 19000)
with m as source:
r.adjust_for_ambient_noise(source, duration = 1)
print("Dinliyorum...")
if (sorgu =="komut"):
mixer.music.load('beeplow.mp3')
mixer.music.play()
audio = r.listen(source)
try:
response = str(r.recognize_google(audio, language="tr"))
print("Sen dedin ki : '" + response + "'")
if sorgu =="komut":
komut(response)
elif sorgu =="kaydet":
rsx = sqlite3.connect('hafiza.db')
rsx_cursorekle = rsx.cursor()
rsx_sorgu = rsx_cursorekle.execute('SELECT id FROM taninankisiler ORDER BY id desc')
veri = rsx_cursorekle.fetchall()
for rsx in veri[0]:
sonid = int(rsx)+1
resimyoluson= str(sonid)
db = sqlite3.connect("hafiza.db")
cs = db.cursor()
cs.execute("INSERT INTO taninankisiler(taninankisiadi,resimyolu) VALUES (?,?)",(response,resimyoluson))
db.commit()
facecrop("yeniyuz.jpg")
except sr.UnknownValueError:
print("Seni duyamadım")
if sorgu =="komut":
dinle("komut")
elif sorgu =="kaydet":
response="Duyamadım, ismini tekrar söylermisin"
return konus(response,"1")
except sr.RequestError as e:
response="İnternet bağlantımı kontrol et"
konus(response)
if __name__ == "__main__":
t1 = multiprocessing.Process(target=cam(panServo,tiltServo))
t2 = multiprocessing.Process(target=dinle("komut"))
t1.start()
t2.start()