首页 > 解决方案 > 使用 OpenCV 从条形码图像中检测和消除倾斜

问题描述

我想使用 Python OpenCV 从条形码图像创建一个通用的倾斜检测和校正程序。有谁知道如何实现这个功能?

请参阅下面的一些图像示例: 在此处输入图像描述

我将非常感谢实现此功能的任何帮助/指导。

非常感谢和亲切的问候, B

标签: opencv

解决方案


我想你想要一个Canny()and的组合HoughLines()。Canny 会检测线条,然后 Hough 变换会创建包含线条角度的记录。然后,您可以通过平均检测到的线角度或类似的东西来转换图像。

示例取自: https ://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_imgproc/py_houghlines/py_houghlines.html

import cv2
import numpy as np

img = cv2.imread('dave.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray,50,150,apertureSize = 3)

lines = cv2.HoughLines(edges,1,np.pi/180,200)
for rho,theta in lines[0]:
    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.imwrite('houghlines3.jpg',img)

推荐阅读