0
我有一張圖像,我想計算此圖像中兩條線之間的角度。讓我們考慮這樣一個非常簡單的圖像:使用Python計算圖像中兩條線之間的夾角
現在我要計算此圖像中的兩條線之間的角度。你知道我怎麼可以在Python中做到這一點?
我有一張圖像,我想計算此圖像中兩條線之間的角度。讓我們考慮這樣一個非常簡單的圖像:使用Python計算圖像中兩條線之間的夾角
現在我要計算此圖像中的兩條線之間的角度。你知道我怎麼可以在Python中做到這一點?
您可以嘗試Hough變換。這種變換允許你檢測線條,然後得到每條線的角度。 然後,您可以使用這兩個角度來計算兩條線之間的角度?
import numpy as np
from skimage.transform import (hough_line, hough_line_peaks,
probabilistic_hough_line)
from skimage.feature import canny
from skimage import data
from pylab import imread, imshow, gray, mean
import matplotlib.pyplot as plt
from matplotlib import cm
image = imread('bn2TV.jpg')
image = np.mean(image,axis=2)
image = (image < 128)*255
h, theta, d = hough_line(image)
fig, axes = plt.subplots(1, 3, figsize=(15, 6),
subplot_kw={'adjustable': 'box-forced'})
ax = axes.ravel()
ax[0].imshow(image, cmap=cm.gray)
ax[0].set_title('Input image')
ax[0].set_axis_off()
ax[1].imshow(np.log(1 + h),
extent=[np.rad2deg(theta[-1]), np.rad2deg(theta[0]), d[-1], d[0]],
cmap=cm.gray, aspect=1/1.5)
ax[1].set_title('Hough transform')
ax[1].set_xlabel('Angles (degrees)')
ax[1].set_ylabel('Distance (pixels)')
ax[1].axis('image')
ax[2].imshow(image, cmap=cm.gray)
for _, angle, dist in zip(*hough_line_peaks(h, theta, d)):
y0 = (dist - 0 * np.cos(angle))/np.sin(angle)
y1 = (dist - image.shape[1] * np.cos(angle))/np.sin(angle)
ax[2].plot((0, image.shape[1]), (y0, y1), '-r')
ax[2].set_xlim((0, image.shape[1]))
ax[2].set_ylim((image.shape[0], 0))
ax[2].set_axis_off()
ax[2].set_title('Detected lines')
plt.tight_layout()
plt.show()
angle=[]
dist=[]
for _, a , d in zip(*hough_line_peaks(h, theta, d)):
angle.append(a)
dist.append(d)
angle = [a*180/np.pi for a in angle]
angle_reel = np.max(angle) - np.min(angle)
大部分代碼都來自這裏:http://scikit-image.org/docs/dev/auto_examples/edges/plot_line_hough_transform.html
我們再拿到
這給一個28度角。看似合理!
非常感謝。這很有幫助。 – Leo
這有點太寬泛,有很多方法,其中一些可能不適用於您的應用程序。請給我們更多詳細信息,以及您編寫的用於解決此問題的代碼。 –