rbo*_*o13 5 python opencv image transform image-processing
我在使用 OpenCV 和 Python 时遇到问题,我是这项技术的新手。只是一些问题,应用霍夫线变换后如何裁剪图像?
这是我的形象。我想用那些有红线的图像来裁剪图像。
这是我裁剪图像的代码,我知道有问题。
minLineLength = 100
maxLineGap = 10
rho = 1
theta = np.pi/180
threshold = 190
lines = cv2.HoughLines(opened, 1, np.pi/180, threshold)
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(image, (x1, y1), (x2, y2), (255, 0, 0), 2)
cropped = image[100:200, 500:640]
Run Code Online (Sandbox Code Playgroud)
我真的需要你们的帮助
我尽了一切努力,但这是我能做到的最接近的。
我使用单应性对图像进行如下变换:
#4 corner points of the image:
pts_src = np.array([[40.0, 124.0],[1017.0, 169.0],[960.0, 712.0],[60.0,697.0]])
#4 corner points of the white background to be transformed on:
pts_dst = np.array([[0.0, 0.0],[960.0, 0.0],[960.0, 575.0],[0.0, 575.0]])
#Obtain the homography matrix 'h':
h, status = cv2.findHomography(pts_src, pts_dst)
#Performing warp transform:
im_out = cv2.warpPerspective(img, h, (white.shape[1],white.shape[0]))
cv2.imwrite("Warped Source Image.jpg", im_out)
Run Code Online (Sandbox Code Playgroud)
####然后我执行了 Canny Edge:
grayw = cv2.cvtColor(im_out,cv2.COLOR_BGR2GRAY)
canny = cv2.Canny(grayw,50,255)
cv2.imwrite("canny Image.jpg", canny)
Run Code Online (Sandbox Code Playgroud)
使用以下命令执行线路检测的后续步骤cv2.HoughLines
可能会容易得多。cv2.Canny(grayw,50,255)
如果不是,请更改代码中给出的行中的阈值。