Итак, с моим кодом я анализирую общее количество пикселей, находящихся в пределах пороговых значений. Тем не менее, это очень медленно, и все это сводится к одной строке кода, в основном, бутылочной сушке всей программы. Этот код просто, что она разбивает массив вверх в значение, так что я могу рассчитывать длину, однако, она приносит кадры в секунду вниз от 30 до 4.Python 2.7, нахождение длины numpy.ndarray
import cv2
import numpy as np
import time
from picamera.array import PiRGBArray
from picamera import PiCamera
import RPi.GPIO as GPIO
from PIL import Image
camera = PiCamera()
camera.resolution = (320,240)
rawCapture= PiRGBArray(camera)
for frame in camera.capture_continuous(rawCapture, format='bgr', use_video_port=True):
data= frame.array
lower=np.array([100, %0, 50], dtype='uint8')
upper= np.array([250, 150, 150], dtype="uint8")
thresh= cv2.inRange(data, lower, upper)
data={tuple(item) for item in thresh} # this is the problem line.
len(data)
rawCapture.truncate(0)
FPS=FPS+1
New_time=time.time()-start
if New_time> 10:
print FPS/10, 'fps'
New_time=0
start=time.time()
FPS=0
Я чувствую, что половина проблем заключается в том, что это цикл (python ненавидит циклы), но я не знаю, как изменить массивы. Что такое «питонический» способ достижения этого?
Что именно вы подразумеваете под длиной? Мне кажется, что вы пытаетесь найти количество уникальных строк в своем массиве, это точно? –
да это правильно. –
Я хотел получить только что-нибудь, что показалось, но этот метод работает. Если бы я мог получить индивидуальный пиксель, который был бы блестящим, но прямо сейчас я просто использую то, что работает. –