Уведомления

Группа в Telegram: @pythonsu

#1 Июль 13, 2018 17:50:51

IVAN222
Зарегистрирован: 2017-04-03
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка, пайтон + ардуино

Всем доброго времени суток. Выдает ошибку, вчем может быть дело. Коротко о изделии пайтон + ардууино + вебкамера, вебка поворачивается (следит) за лицом.

 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
выдает ошибку
Traceback (most recent call last):
File “C:\испытание\face-track-cam-master\face-track-cam-master\webka_pohyb.py”, line 16, in <module>
arduino.write(cesta)
File “C:\Users\IVAN\AppData\Local\Programs\Python\Python35-32\lib\site-packages\serial\serialwin32.py”, line 308, in write
data = to_bytes(data)
File “C:\Users\IVAN\AppData\Local\Programs\Python\Python35-32\lib\site-packages\serial\serialutil.py”, line 63, in to_bytes
raise TypeError('unicode strings are not supported, please encode to bytes: {!r}'.format(seq))
TypeError: unicode strings are not supported, please encode to bytes: ‘70h70v’
>>>

Офлайн

#2 Июль 13, 2018 19:32:41

vic57
Зарегистрирован: 2015-07-07
Сообщения: 893
Репутация: +  126  -
Профиль   Отправить e-mail  

Ошибка, пайтон + ардуино

преобразуй в байты

 arduino.write(cesta.encode())

Офлайн

#3 Июль 14, 2018 09:23:59

IVAN222
Зарегистрирован: 2017-04-03
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка, пайтон + ардуино

Здравствуйте форумчане. Сегодня только добрался до компа. Спасибо 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
>>>

Офлайн

#4 Июль 14, 2018 09:33:28

vic57
Зарегистрирован: 2015-07-07
Сообщения: 893
Репутация: +  126  -
Профиль   Отправить e-mail  

Ошибка, пайтон + ардуино

TypeError: ожидается целочисленный аргумент, получено float

Офлайн

#5 Июль 14, 2018 10:10:17

IVAN222
Зарегистрирован: 2017-04-03
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка, пайтон + ардуино

Изменил в коде на это
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
>>>

Офлайн

#6 Июль 14, 2018 12:08:17

vic57
Зарегистрирован: 2015-07-07
Сообщения: 893
Репутация: +  126  -
Профиль   Отправить e-mail  

Ошибка, пайтон + ардуино

IVAN222, ты хотя бы код разбери. argmax - где у тебя определяется?

Офлайн

#7 Июль 14, 2018 23:54:40

IVAN222
Зарегистрирован: 2017-04-03
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка, пайтон + ардуино

argmax эта функция работы с осями, в библиотеке numpy. Код этот написал какойто чех в 2014 году. Хотя он указал import numpy as np (Импортировать NumPy под именем np). Но почемуто пишет argmax, если так то прокатывает pozice = np.argmax(obsah). Может в 2014 году версия библиотеки numpy и прокатывало без np. Короче весь код надо пересматривать под библиотеки на версии библиотек которые у меня сейчас то есть более свежие. Разрабодчики библиотек кагда выпускают новую версию какой то библиотеки они там что то убирают , что то добавляют и из за этого и глюки.

Офлайн

#8 Июль 15, 2018 00:02:03

vic57
Зарегистрирован: 2015-07-07
Сообщения: 893
Репутация: +  126  -
Профиль   Отправить e-mail  

Ошибка, пайтон + ардуино

можешь отдельно импортировать

 from numpy import arange, argmax

Офлайн

#9 Июль 15, 2018 00:08:32

IVAN222
Зарегистрирован: 2017-04-03
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка, пайтон + ардуино

Хорошая идея надо будет попробовать.

Офлайн

#10 Июль 15, 2018 07:06:41

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Ошибка, пайтон + ардуино

IVAN222
Может в 2014 году версия библиотеки numpy и прокатывало без np
никогда оно не прокатывало без numpy. Максимум что может быть смена версии питона что потенциально делает старый код неработоспособным.

Но судя по вашему описанию у вас просто код который исходно неработоспособный.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version