数字图像预处理代码梳理

该博客介绍了图像处理的几个关键步骤,包括使用OpenCV库进行二值化转换、Canny边缘检测以及Hough变换检测直线。通过adaptiveThreshold进行二值化,然后应用Canny算法提取边缘,最后利用HoughLines方法寻找图像中的直线。此外,还涉及了图像的倾斜校正。
摘要由CSDN通过智能技术生成

二值化:

imgcut = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
thrpic = 255 - cv2.adaptiveThreshold(imgcut, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
                                         cv2.THRESH_BINARY, 31, 11)

*边缘检测 *

#输入是二值化后的图片
 thrpic = cv2.Canny(thrpic, 20, 250)

直线检测

def drawlines(img, name):
    edges = cv2.Canny(img, 50, 200)
    minLINELENGTH = 20
    #lines = cv2.HoughLinesP(edges, 1, np.pi / 180, minLINELENGTH, 0)
    lines = cv2.HoughLines(edges, 1, np.pi / 180, 80)
    if lines is not None:
        print(name, "'s line:", len(lines))
        for line in lines:
            rho, theta = line[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), (255, 255, 255), 2)
            #将直线改为与背景色一直
    return img
           #摆正图像, 倾斜旋转
           if x1 == x2 or y1 == y2:
                break
            t = float(y2 - y1) / (x2 - x1)
            rotate_angle = math.degrees(math.atan(t))
            print("angel:", rotate_angle)
            if rotate_angle > 0.5 or rotate_angle < -0.5:
                img = ndimage.rotate(img, rotate_angle)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值