簡體   English   中英

代碼低FPS的OpenCV Python Line

[英]OpenCV Python Line following Code Low FPS

我嘗試了各種各樣的方法,但我仍然得到apx 2-3 fps。

import cv2

導入numpy為np

 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() 

嘗試使用較低的幀分辨率。 您可以嘗試使用較小的分辨率,並查看精度如何隨着分辨率的降低而降低,並找到折衷方案。

另一種可能性是僅處理每個幀的選定區域。 假設您在圖像的一個區域中找到要遵循的線條。 您可以假設線的位置在下一幀中沒有太大變化,並且僅處理該線周圍的區域。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM