Уведомления

Группа в Telegram: @pythonsu

#1 Май 18, 2015 18:06:27

Casufi
От:
Зарегистрирован: 2006-11-19
Сообщения: 38
Репутация: +  0  -
Профиль   Отправить e-mail  

Raspbery PI + Numpy матричные операции слишком медленные

[code] import numpy as np import cv2 import time import serial

ttyDev = '/dev/ttyAMA0'

ttyDev = 0

ttyBourRate = 115200 refBW = 100 limitLight = 10 limitDark = 90

ser = serial.Serial(ttyDev, ttyBourRate, timeout=0) # open first serial port

font = cv2.FONT_ITALIC cap = cv2.VideoCapture(0) firstFrame = 1 while(True): badPixels = 0 if firstFrame == 1: ret, frame = cap.read() #height, width = frame.shape[:2] #frame = cv2.resize(frame,(width/2, height/2), interpolation = cv2.INTER_CUBIC) gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) pixelsArr = np.array(gray) if firstFrame == 1: totalPixels = pixelsArr.size

darkPixels = pixelsArr < refBW-limitDark
ligthPixels = pixelsArr > refBW+limitLight 
badPixels = np.sum(darkPixels+ligthPixels)
percentageBad = int(round(100*badPixels/totalPixels))

time2 = int(round(time.time() * 1000))
if firstFrame != 1:
    delta = time2-time1
    #cv2.putText(frame, 'FPS: '+str(round(1000.0*1.0/delta,3)), (20, 40), font, 1, (255, 0, 0), 2)

print str(round(1000.0*1.0/delta,3)) #cv2.putText(frame, 'Bad: '+str(percentageBad), (20, 80), font, 1, (255, 0, 0), 2) ser.write([percentageBad])

# Display the resulting frame
#cv2.imshow('test',frame)
time1 = int(round(time.time() * 1000))
firstFrame = 0
if cv2.waitKey(20) & 0xFF == ord('q'):
    break

When everything done, release the capture

ser.close() cap.release() cv2.destroyAllWindows() [/code] Картинка размером 640 на 480, четыре строки \

darkPixels = pixelsArr < refBW-limitDark
ligthPixels = pixelsArr > refBW+limitLight 
badPixels = np.sum(darkPixels+ligthPixels)
percentageBad = int(round(100*badPixels/totalPixels))

Дают просатку по скорости до 6-9 FPS возможно ли быстрее сравнить каждый елемент массива с верхней и нижней границей



Отредактировано Casufi (Май 20, 2015 10:24:58)

Офлайн

#2 Май 18, 2015 18:10:27

Casufi
От:
Зарегистрирован: 2006-11-19
Сообщения: 38
Репутация: +  0  -
Профиль   Отправить e-mail  

Raspbery PI + Numpy матричные операции слишком медленные

Форум сожрал форматирование

http://pastebin.com/TWYTkPrE



Офлайн

#3 Май 18, 2015 18:34:30

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Raspbery PI + Numpy матричные операции слишком медленные

Casufi
Форум сожрал форматирование
Профиль –> Отображение
измени с markdown на bbcode



Офлайн

#4 Май 18, 2015 20:31:38

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

Raspbery PI + Numpy матричные операции слишком медленные

Casufi
возможно ли быстрее сравнить каждый елемент массива с верхней и нижней границей
Ну возможности оптимизации есть всегда. Напишите сравнение на С и посмотрите что получится по времени. Думаю будет быстрее, но не сильно . Еще проще почитать доку по opencv возможно там есть такой фильтр.



Отредактировано doza_and (Май 18, 2015 20:33:38)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version