python - OpenCV - 应用霍夫线变换后裁剪图像

标签 python image opencv image-processing transform

我在使用 OpenCV 和 Python 时遇到了问题,我是这项技术的新手。只是一些问题,应用霍夫线变换后如何裁剪图像?

这是我的图片。我想用那些有红线的人裁剪图像。

enter image description here

这是我裁剪图片的代码,我知道有问题。

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]

我真的需要你们的帮助

最佳答案

我尽我所能,但这是我能达到的最接近的结果。

我使用单应性变换图像如下:

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

enter image description here

####然后我进行了Canny edge:

grayw = cv2.cvtColor(im_out,cv2.COLOR_BGR2GRAY)
canny = cv2.Canny(grayw,50,255)
cv2.imwrite("canny Image.jpg", canny)

enter image description here

使用 cv2.HoughLines 执行后续的线检测步骤可能会容易得多。如果不是,请更改代码中给出的 cv2.Canny(grayw,50,255) 行中的阈值。

关于python - OpenCV - 应用霍夫线变换后裁剪图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41670164/

相关文章:

python - pandas如何计算索引?

python - 如何使用numpy将一个矩阵与另一个矩阵中的每一行相乘

image - OpenCV-删除图像中的独立短线

image - 请告诉我有关此计算机视觉任务的信息

c++ - 在 OpenCV 中使用 FeatureDetector 会导致访问冲突

python - Python opencv 3 SIFT功能提取

python - kazoo 2.0 库中的错误

python - 如何从 python 中的 timedelta64[ns] 对象中提取天数作为整数

html - 以正确的方式填充背景

html - 垂直图像在某些手机上呈水平状态