回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我一直在研究和尝试一些函数来得到我想要的,我觉得我可能想得太多了。
下面是我的代码的一个版本。示例图像是<a href="https://i.stack.imgur.com/FqsgK.jpg" rel="nofollow noreferrer">here</a></p>
<p>我的最终目标是找到近似线相对于帧(绿线)的角度(黄色)<a href="https://i.stack.imgur.com/8oTGG.png" rel="nofollow noreferrer">Final</a>
我甚至还没有谈到节目的角度部分</p>
<p>我从下面的代码中得到的结果如下<a href="https://i.stack.imgur.com/dTwwM.jpg" rel="nofollow noreferrer">Canny</a><a href="https://i.stack.imgur.com/7ru1k.jpg" rel="nofollow noreferrer">Closed</a><a href="https://i.stack.imgur.com/PdK6b.jpg" rel="nofollow noreferrer">Small Removed</a></p>
<p>有谁有更好的方法来创造差异并建立估算线?
感谢您的帮助</p>
<pre><code>import cv2
import numpy as np
pX = int(512)
pY = int(768)
img = cv2.imread('IMAGE LOCATION', cv2.IMREAD_COLOR)
imgS = cv2.resize(img, (pX, pY))
aimg = cv2.imread('IMAGE LOCATION', cv2.IMREAD_GRAYSCALE)
# Blur image to reduce noise and resize for viewing
blur = cv2.medianBlur(aimg, 5)
rblur = cv2.resize(blur, (384, 512))
canny = cv2.Canny(rblur, 120, 255, 1)
cv2.imshow('canny', canny)
kernel = np.ones((2, 2), np.uint8)
#fringeMesh = cv2.dilate(canny, kernel, iterations=2)
#fringeMesh2 = cv2.dilate(fringeMesh, None, iterations=1)
#cv2.imshow('fringeMesh', fringeMesh2)
closing = cv2.morphologyEx(canny, cv2.MORPH_CLOSE, kernel)
cv2.imshow('Closed', closing)
nb_components, output, stats, centroids = cv2.connectedComponentsWithStats(closing, connectivity=8)
#connectedComponentswithStats yields every separated component with information on each of them, such as size
sizes = stats[1:, -1]; nb_components = nb_components - 1
min_size = 200 #num_pixels
fringeMesh3 = np.zeros((output.shape))
for i in range(0, nb_components):
if sizes[i] >= min_size:
fringeMesh3[output == i + 1] = 255
#contours, _ = cv2.findContours(fringeMesh3, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
#cv2.drawContours(fringeMesh3, contours, -1, (0, 255, 0), 1)
cv2.imshow('final', fringeMesh3)
#cv2.imshow("Natural", imgS)
#cv2.imshow("img", img)
cv2.imshow("aimg", aimg)
cv2.imshow("Blur", rblur)
cv2.waitKey()
cv2.destroyAllWindows()
</code></pre>