Задать вопрос

Как увеличить скорость анализа картинки на raspberry pi2 + python + opencv?

Есть задача, нужно с камеры проанализировать равномерность цвета на картинке (картинка bw, есть эталонная яркость и допустимые отклонения вверх/вниз, на тестовом примере разрешение 640 х 480)
В примере кода ниже, я обрабатываю только первый кадр, для того, чтобы убрать задержку получения кадра с камеры, тестировать я могу только на USB вебке, а там FPS от 6 до 20 кадров в секунду
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()


Так вот, банальное получение массива с пикселями которіе не вписіваются в предел яркости дает FPS: 12-18
Может у меня слишком топорный алгоритм подсчета ?
  • Вопрос задан
  • 1808 просмотров
Подписаться 5 Оценить 2 комментария
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы