Форум сайта python.su
Всем доброго времени суток. Выдает ошибку, вчем может быть дело. Коротко о изделии пайтон + ардууино + вебкамера, вебка поворачивается (следит) за лицом.
import serial import time import math import matplotlib.pyplot as plt import numpy as np import cv2 from numpy import arange import scipy.misc from scipy.misc import imrotate arduino = serial.Serial('COM4', 115200) time.sleep(2) # waiting the initialization... startH = 70 startV = 70 cesta = str(startH)+'h'+str(startV)+'v' arduino.write(cesta) ociX = [] ociY = [] uhelOci = 0 face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml') cap = cv2.VideoCapture(0) scale = arange(1.0, 2.1, 0.1) while(True): ret, frame = cap.read() img = frame gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) Y,X = gray.shape StredX = X/2 StredY = Y/2 cv2.rectangle(img,(StredX-2,StredY-2),(StredX+2,StredY+2),(0,0,255),2) #cv2.rectangle(img,(StredX-40,StredY-40),(StredX+40,StredY+40),(150,150,0),2) obsah = [] faces = face_cascade.detectMultiScale(gray,1.2,5) if not(len(faces)==0): for (x,y,w,h) in faces: obsah.append(w*h) maximum = max(obsah) pozice = argmax(obsah) (x,y,w,h) = faces[pozice] cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2) roi_gray = gray[y:y+h, x:x+w] roi_color = img[y:y+h, x:x+w] StredRecX = x+(h/2) StredRecY = y+(h/2) cv2.rectangle(img,(StredRecX-2,StredRecY-2),(StredRecX+2,StredRecY+2),(0,0,255),2) posunX = (StredX-StredRecX) posunY = (StredY-StredRecY) if(abs(posunX)>40)|(abs(posunY)>40): if(posunX>5): startV = startV+1 elif(posunX<5): startV = startV-1 if(posunY>5): startH = startH-1 elif(posunY<5): startH = startH+1 cesta = (str(startH)+'h'+str(startV)+'v') arduino.write(cesta) while(True): if(arduino.read()=='1'): break scale = arange(1.3, 2.1, 0.1) for index in scale: eyes = eye_cascade.detectMultiScale(roi_gray,index,5) if (len(eyes) == 2): ociX = [] ociY = [] for (ex,ey,ew,eh) in eyes: ociX.append(ex+(eh/2)) ociY.append(ey+(ew/2)) cv2.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(0,255,0),2) cv2.line(roi_color,(ociX[0],ociY[0]),(ociX[1],ociY[1]),(0,0,255),2) if(ociX[0]>ociX[1]): uhelOci = math.atan2(ociY[0]-ociY[1],ociX[0]-ociX[1]) else: uhelOci = math.atan2(ociY[1]-ociY[0],ociX[1]-ociX[0]) #stupneN = math.degrees(cislo) #rozdil = stupneN-stupne break cv2.imshow('img',img) if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows() arduino.close() #say goodbye to Arduino
Офлайн
преобразуй в байты
arduino.write(cesta.encode())
Офлайн
Здравствуйте форумчане. Сегодня только добрался до компа. Спасибо vic57 . Преобразовал но теперь вылезла другая ошибка
Traceback (most recent call last):
File “C:\испытание\face-track-cam-master\face-track-cam-master\webka_pohyb.py”, line 31, in <module>
cv2.rectangle(img,(StredX-2,StredY-2),(StredX+2,StredY+2),(0,0,255),2)
TypeError: integer argument expected, got float
>>>
Офлайн
TypeError: ожидается целочисленный аргумент, получено float
Офлайн
Изменил в коде на это
StredX = int(X/2)
StredY = int(Y/2)
картинка появилось, как только находит лицо или похожее вылазит ‘argmax’ не определен
Traceback (most recent call last):
File “C:\испытание\face-track-cam-master\face-track-cam-master\webka_pohyb.py”, line 39, in <module>
pozice = argmax(obsah)
NameError: name ‘argmax’ is not defined
>>>
Офлайн
IVAN222, ты хотя бы код разбери. argmax - где у тебя определяется?
Офлайн
argmax эта функция работы с осями, в библиотеке numpy. Код этот написал какойто чех в 2014 году. Хотя он указал import numpy as np (Импортировать NumPy под именем np). Но почемуто пишет argmax, если так то прокатывает pozice = np.argmax(obsah). Может в 2014 году версия библиотеки numpy и прокатывало без np. Короче весь код надо пересматривать под библиотеки на версии библиотек которые у меня сейчас то есть более свежие. Разрабодчики библиотек кагда выпускают новую версию какой то библиотеки они там что то убирают , что то добавляют и из за этого и глюки.
Офлайн
можешь отдельно импортировать
from numpy import arange, argmax
Офлайн
Хорошая идея надо будет попробовать.
Офлайн
IVAN222никогда оно не прокатывало без numpy. Максимум что может быть смена версии питона что потенциально делает старый код неработоспособным.
Может в 2014 году версия библиотеки numpy и прокатывало без np
Офлайн