首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenCV Python遵循代码低FPS

OpenCV Python遵循代码低FPS
EN

Stack Overflow用户
提问于 2017-04-23 18:02:32
回答 1查看 137关注 0票数 1

我尝试了各种方法,但我仍然得到APX2-3fps。

代码语言:javascript
复制
import cv2

将numpy导入为np

代码语言:javascript
复制
import cv2
import numpy as np

##cap = cv2.imread('C:\\Users\\efeongan\\Desktop\\PYTHOn_OPENCV\\linetest.mp4')
cap = cv2.VideoCapture('C:\\Users\\efeongan\\Desktop\\PYTHOn_OPENCV\\linetest.mp4')
while True:
    _, frame = cap.read()
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    lowbg = np.array([0,0,0])
    highbg = np.array([50, 50, 50])
    kernel = np.ones([10, 10], np.uint8)
    mask = cv2.inRange(frame, lowbg, highbg)
    res = cv2.bitwise_and(gray, gray, mask = mask)
    dilation = cv2.dilate(res, kernel, iterations = 1)
    lines = cv2.HoughLinesP(dilation,rho=0.02,theta=np.pi/500, threshold=100,lines=np.array([]), minLineLength= 0)
    a,b,c = lines.shape
    if lines[1][0][0] > 240:
        diff = lines[1][0][0] - 240
        print(diff)
    if lines[1][0][0] < 240:
        diff = 220 - lines[1][0][0]
        print(diff)
    for i in range(a):
        cv2.line(dilation, (lines[i][0][0], lines[i][0][1]), (lines[i][0][2], lines[i][0][3]), (255, 255, 255), 3, cv2.LINE_AA)
    cv2.line(frame, (240, 800), (240 + diff, 800), (255,0,0),10)
    cv2.putText(frame,str(diff),(240 + diff,800), cv2.FONT_HERSHEY_SIMPLEX, 1, 255)
    print("x", lines[1][0][0], cnts)
    cv2.imshow('raw', frame)
    k = cv2.waitKey(1)
    if k == 27:
        brak
cv2.desrtroyAllWindows()

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-24 07:18:42

请尝试使用较低的帧分辨率。你可以用较小的分辨率做实验,看看分辨率的降低是如何降低的,然后找个折中的办法。

另一种可能是只处理每个帧的选定区域。假设您在图像的一个区域中找到要跟随的线。您可以假设在下一个帧中,行的位置变化不大,并且只处理这条线周围的区域。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43574635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档