Raspberry pi实时视频对象检测

时间:2018-01-10 16:30:09

标签: python opencv raspberry-pi object-detection

我是使用python和对象检测的新手,需要一些uni项目的帮助!

1-如果可以使用相同的haar级联文件我可以使用相同的haar级联文件来训练pi以检测静止图像中的特定对象(使用picamera)来检测实时视频源中的相同图像。我的uni项目要求机器人搜索并找到特定对象并检索它,或者它是一个完全独立的过程(即设置类等)?如果是这样,我在哪里可以找到最有用的信息,因为我在网上看时并不太成功。 (pyimagesearch有关于此的博客文章,但是关于使用类,我不知道如何为特定对象创建一个类,或者如果你甚至需要一个......)

2-目前,我的pi可以检测静止图像中的对象(特定立方体),但不是非常准确或一致,它经常检测对象的边缘以及错误地检测背景中的其他东西或作为图像一部分的阴影,也作为对象。它倾向于找到多个立方体(许多小矩形,大部分位于 - 非常接近)和物体中,因此它表示它在图像中检测到2个以上的立方体(有时为15-20或更多),而不仅仅是一个立方体。我在徘徊如何减少这个错误并增加pi的准确性和一致性,以便它只检测到一个,或者至少没有错误地检测到图像中的背景阴影或其他东西?我知道照明会影响结果,但是如果它因为原始图像的质量而徘徊,我用我用来训练haar级联的多维数据集的picamera(由于照明不足,这是一张很暗的照片),或者可能是图像本身的大小(将其裁剪到边缘,因此它只是立方体并将其调整为50x50),或者在训练级联文件时,我没有训练多个对象的图像对抗负片。您提供的用于训练pi的图像是否必须与picamera一起拍摄,或者您可以使用更清晰的图片说出您的手机并使用它们来训练级联以通过picamera进行检测?我尝试升级代码中的分辨率但是这使得数据分析需要太长时间并没有太大的区别。为长篇文章道歉,因为我对这一切都是新手并且如果有任何改善结果的方式徘徊,或者是为了更高的准确性重新训练级联的唯一方法,我宁愿不做,因为它需要两天才能完成使用pi零W板!

非常赞赏!

我的规格:在Mac上使用16gb SD卡的raspberry pi Zero W板,运行openCV 3.2和Python 2.7。

使用pi相机拍摄的图像中的物体检测代码:

import io 
import picamera 
import cv2 
import numpy as np

stream = io.BytesIO()

with picamera.PiCamera() as camera: camera.resolution = (320, 240) camera.capture(stream, format='jpeg')

buff = numpy.fromstring(stream.getvalue(), dtype=numpy.uint8)

image = cv2.imdecode(buff, 1)

cube_cascade = cv2.CascadeClassifier('/home/pi/data/cube1-cascade-10stages.xml')

gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)

Cube = cube_cascade.detectMultiScale(gray, 1.1, 5)

print "Found "+str(len(Cube))+" cube(s)"

for (x,y,w,h) in Cube: cv2.rectangle(image, (x,y), (x+w,y+h), (255,255,0), 2)

cv2.imwrite('result.jpg',image)

提前致谢。

0 个答案:

没有答案