无法使用网络摄像头在RaspberryPi中执行实时视频处理

时间:2019-11-27 11:24:20

标签: python raspberry-pi3 webcam video-processing opencv3.0

我写了一个代码,使用 RaspberryPi 3B + 中的网络摄像头( Logitech C310 HD网络摄像头)检测白色。 代码将执行以下功能:

  1. 使用cv2.VideoCapture (0)

  2. 捕获视频
  3. 抓住视频的每一帧,并在该帧中寻找白色物体。

  4. 如果该框架中存在白色物体,则代码将其包围并打印白色。

  5. 真实视频和经过处理的视频将使用cv2.imshow('frame',frame1) and cv2.imshow('res',res1).

  6. 显示

代码如下所示:

import cv2
import numpy as np
from time import sleep 

cap1 = cv2.VideoCapture(0)
cap1.set(3,640)
cap1.set(4,480)
cap1.set(5,15)


    while(1):

    _, frame1 = cap1.read()
    #hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)

    # define range of white color in HSV
    # change it according to your need !
    lower_white = np.array([150,150,150], dtype=np.uint8)
    upper_white = np.array([255,255,255], dtype=np.uint8)

    # Threshold the HSV image to get only white colors
    mask1 = cv2.inRange(frame1, lower_white, upper_white)

    kernal = np.ones((5, 5), "uint8")

    # Tracking the Red Color
    (_, contours1, hierarchy) = cv2.findContours(mask1, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

    for pic, contour1 in enumerate(contours1):
        area1 = cv2.contourArea(contour1)
        #start = time.time()
        if (area1 > 1200):
            print 'white in cam 1'




            #x, y, w, h = cv2.boundingRect(contour)
            #img = cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 0, 255), 2)
            ellipse1 = cv2.fitEllipse(contour1)
            cv2.ellipse(frame1, ellipse1, (0, 255, 0), 2)
            #cv2.putText(frame, "RED color", (x, y), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255))


    red = cv2.dilate(mask1, kernal)

    # Bitwise-AND mask and original image
    res1 = cv2.bitwise_and(frame1,frame1, mask= mask1)

    cv2.imshow('frame',frame1)
    cv2.imshow('res',res1)

    k = cv2.waitKey(5) & 0xFF
    if k == 27:
        break

cap1.release()
cv2.destroyAllWindows()

我的问题是几个月前,这段代码实时运行良好。但是现在当我再次尝试运行相同的代码时,我的视频无法实时运行,但是存在巨大的时滞。例如,当相机前面有白色物体时,将需要几分钟时间将其显示为白色。过去,当我运行此代码时,视频帧窗口出现时没有任何时间滞后,但现在几分钟后出现了帧窗口。

请向我解释如何解决此问题?为什么以前的相同代码可以正常工作,但现在却无效呢?这是python2或python3还是RaspberryPi的问题吗?

0 个答案:

没有答案