我一直致力于使用 python 和計算機視覺來檢測名為

我假設雖然 HoughLines 函式只產生了很多行,以至于它覆寫了螢屏,但我似乎無法獲得正常數量的行。我不確定這個位是否有用,但與我可以在網上找到的任何教程或示例相比,我必須使用極高的閾值以避免幾乎完全紅屏,但即便如此,也只會顯示 5 行。我不能使用 HoughLines 函式,但本文的下一步取決于這個結果,所以我要么必須解決這個問題,要么找到一個完全不同的實作。對此的任何幫助表示贊賞。謝謝!
import cv2
import numpy as np
img = cv2.imread(pathreal, 1)
middlex = img.shape[1]/2
middley = img.shape[0]/2
def gaussianweights(image):
newarr = [[0 for i in range(image.shape[1])] for j in range(image.shape[0])]
for i in range(image.shape[1]):
for j in range(image.shape[0]):
x,y = i,j
filtered = np.exp(((x-middlex)**2)/((middlex**2)/2) ((y-middley)**2)/((middley**2)/2))
newarr[j][i] = image[j][i]*filtered
return newarr
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
weighted_img = gaussianweights(img_gray)
filtered_img = cv2.filter2D(img_gray,-1, np.array([[1,1,1,1,1],[1,1,1,1,1],[1,1,-24,1,1],[1,1,1,1,1],[1,1,1,1,1]]))
dst = cv2.Canny(filtered_img, 600, 800, None, 3)
lines = cv2.HoughLines(dst,1,np.pi/180,100)
for line in lines:
for rho,theta in line:
a = np.cos(theta)
b = np.sin(theta)
x0 = a*rho
y0 = b*rho
x1 = int(x0 1000*(-b))
y1 = int(y0 1000*(a))
x2 = int(x0 - 1000*(-b))
y2 = int(y0 - 1000*(a))
cv2.line(img,(x1,y1),(x2,y2),(0,0,255),2)
cv2.imshow("Hough Image",img)
cv2.waitKey(0)
編輯:
這是 dst 因為有人問

uj5u.com熱心網友回復:
使用
也許您可以從該代碼開始...
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/405043.html
標籤:
