我正在使用这个命令,即OpenCV图像捕获并使用PIL进行处理。捕获和完成处理需要将近2秒。我需要更简单的命令和最快的处理才能为我的机器人工作。任何人都有建议请咨询。
import cv2
from cv2 import *
from PIL import Image
import RPi.GPIO as GPIO
import time
im = 0
.
.
.
.
.
def imgCrop(im):
box = (0, 190, 640, 200)
region = im.crop(box)
region.save('crop.jpg')
return region
def imgThres(im):
gray = im.convert('L')
bw = gray.point(lambda x: 0 if x<150 else 255, '1')
bw.save("bw.jpg")
return bw
def find_centroid(im, rez):
width, height = im.size
XX, YY, count = 0, 0, 0
for x in xrange(0, width, rez):
for y in xrange(0, height, rez):
if im.getpixel((x, y)) == 255:
XX += x
YY += y
count += 1
return XX/count, YY/count
def camera ():
cam = VideoCapture(0) # 0 -> index of camera
s, img = cam.read()
if s:
imwrite("img.jpg",img) #save image
imageFile = "img.jpg"
Img = Image.open(imageFile)
cImg = imgCrop(Img)
tImg = imgThres(cImg)
print find_centroid(tImg, 1)
cen = find_centroid(tImg, 1)
diff = cen[0] - 320
if diff > 10:
right()
print 'right'
if diff < -10:
left()
print 'left'
else:
forward()
print 'straight'
while True:
camera ()
我使用raspberry pi B作为我的微控制器并使用网络摄像头捕捉图像。有关信息此命令仅用于图像捕获和处理。还有机器人动作命令但我没有包含在这里。