OpenCV和Python-实时图像(帧)处理

ant*_*hrx 1 python opencv raspberry-pi3

我们正在学校里做一个需要进行基本图像处理的项目。我们的目标是为Raspberry Pi使用每个视频帧并进行实时图像处理。

我们试图将raspistill包含在我们的python程序中,但到目前为止没有任何效果。我们项目的目标是在图像处理的帮助下设计一辆遵循蓝色/红色/任何彩色线条的RC汽车。

我们认为制作一个进行所有图像处理必要的python程序是一个好主意,但是目前我们正努力将记录的图像引入python程序中。有没有办法用picamera做到这一点,还是我们应该尝试其他方式?

对于任何好奇的人,这就是我们程序当前的外观

while True:
    #camera = picamera.PiCamera()
    #camera.capture('image1.jpg')
    img = cv2.imread('image1.jpg')
    width = img.shape[1]
    height = img.shape[0]
    height=height-1
    for x in range (0,width):
            if x>=0 and x<(width//2):
                    blue  = img.item(height,x,0)
                    green = img.item(height,x,1)
                    red   = img.item(height,x,2)
                    if red>green and red>blue:
Run Code Online (Sandbox Code Playgroud)

预先感谢炭疽。

Sim*_*ten 5

OpenCV已经包含处理实时摄像机数据的功能。

此OpenCV文档提供了一个简单的示例:

import numpy as np
import cv2

cap = cv2.VideoCapture(0)

while(True):
    # Capture frame-by-frame
    ret, frame = cap.read()

    # Our operations on the frame come here
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    # Display the resulting frame
    cv2.imshow('frame',gray)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)

当然,您不想显示图像,但是可以在此处完成所有处理。

记住要睡几百毫秒,这样pi才不会过热。

编辑:

“尽管我将如何处理它。我一直都使用“ img = cv2.imread('image1.jpg')”。我该用什么代替这里的“ img”变量?我该怎么办?使用?ret是什么意思呢?:)“

ret指示读取是否成功。如果没有,请退出程序。

读取frame的内容与您的一样,img = cv2.imread('image1.jpg')因此您的检测代码应完全相同。

唯一的区别是您的图像不需要保存并重新打开。同样出于调试目的,您可以保存记录的图像,例如:

import cv2, time

cap = cv2.VideoCapture(0)

ret, frame = cap.read()
if ret:
    cv2.imwrite(time.strftime("%Y%m%d-%H%M%S"), frame)

cap.release()
Run Code Online (Sandbox Code Playgroud)