Найти - Пользователи
Полная версия: Raspbery PI + Numpy матричные операции слишком медленные
Начало » Python для новичков » Raspbery PI + Numpy матричные операции слишком медленные
1
Casufi

[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

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

http://pastebin.com/TWYTkPrE

FishHook
Casufi
Форум сожрал форматирование
Профиль –> Отображение
измени с markdown на bbcode
doza_and
Casufi
возможно ли быстрее сравнить каждый елемент массива с верхней и нижней границей
Ну возможности оптимизации есть всегда. Напишите сравнение на С и посмотрите что получится по времени. Думаю будет быстрее, но не сильно . Еще проще почитать доку по opencv возможно там есть такой фильтр.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB