OpenCV VideoWriter 在 Raspberry pi 4

问题描述

我是 OpenCV 和 RaspBerry 的新手。我正在尝试在 raspBerry pi 4 上使用 cv.VideoWriter_fourcc 捕获视频。 我将图像转换为灰色,并使用 cv.bilateralFilter 进行模糊处理,并使用 cv.HoughCircles 搜索圆圈。生成的视频冻结并丢失帧。我首先将 FPS 设置为 24.0,但它看起来像是快进。我尝试了一些值,似乎 6.0 是匹配视频长度的最佳值。

我的代码包含更多不相关的步骤,我将在下面提供相关部分。

我怎样才能从中获得流畅的 30 或 60 FPS 视频? 提前致谢。

#Open cam and initialize video codecs
cap = cv.VideoCapture(0)
fourcc = cv.VideoWriter_fourcc(*"MJPG")
out = cv.VideoWriter('myvideo.avi',fourcc,22.0,(640,480))
.
.
#For 80 Sec while loop:
start_time = int(time.time())
duration = int(80)
.
.
while ((int(time.time())-start_time)<duration):
    istrue,frame = cap.read()
    #Gray and  blur
    gray = cv.cvtColor(frame,cv.COLOR_BGR2GRAY)
    blur = cv.bilateralFilter(gray,13,75,75) #Blur density is 13. 75 is irrelevant.
    #Find Circles
    circles = cv.HoughCircles(blur,cv.HOUGH_GRADIENT,1,1000,param1 = 50,param2=45,minRadius = 1,maxRadius = 0)
    #Put time as text
    cv.putText(frame,str(datetime.time(datetime.Now())),(15,30),cv.FONT_HERShey_SIMPLEX,0.5,(255,0),cv.LINE_AA)
    
    #put  text at every 20 secs
    cv.putText(frame,every_20_sec(start_time),50),cv.LINE_AA)
    #cv.putText(frame,cv.LINE_AA)
    if circles is not None:
        circles = np.uint16(np.around(circles))
        for i in circles[0,:]:
            cv.circle(frame,(i[0],i[1]),i[2],(0,255,2)
            cv.circle(frame,255),2)
            #pixel coordinates as text
            pos_str = str(int(i[0])) + ' ' + str(int(i[1]))
            cv.putText(frame,pos_str,(i[0]+100,i[1]+100),2,cv.LINE_AA)
            
            xlist.append(i[0])
            ylist.append(i[1])
    out.write(frame)

cap.release()
out.release()

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)