图片裁剪ocr

本文介绍了一个Python脚本,该脚本利用OpenCV库进行图像处理,自动裁剪出图像中的二维码区域。首先,脚本将图片转换为灰度,然后进行二值化处理和轮廓检测。通过计算轮廓的宽高比,筛选出最接近二维码比例的矩形区域进行裁剪。最后,裁剪后的图像保存到指定的输出目录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import cv2 as cv
import os
import cv2

# 这个是裁剪图片类
def crop_qrcode_images(input_path, output_path):
    # 遍历该目录下的所有图片文件
    for filename in os.listdir(input_path):
        src = cv.imread(os.path.join(input_path, filename))
        gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)

        # 通过二值化得到二维码区域
        _, thresh = cv.threshold(gray, 0, 255, cv.THRESH_BINARY_INV + cv.THRESH_OTSU)

        # 查找轮廓并选出最大的轮廓
        contours, hierarchy = cv.findContours(thresh, cv.RETR_TREE, cv.CHAIN_APPROX_SIMPLE)
        max_contour = max(contours, key=cv.contourArea)

        # 找到包围最大轮廓的矩形并计算出其宽高比
        x, y, w, h = cv.boundingRect(max_contour)
        aspect_ratio = w / h

        # 如果宽高比符合二维码标准,就将该矩形作为二维码区域进行裁剪
        # if 0.9 <= aspect_ratio <= 1.1:

        dst = src[y:y + h, x:x + w]
        # print(max_contour)
        # 检查并创建目标文件夹
        output_dir = os.path.join(input_path, "tugai")
        if not os.path.exists(output_dir):
            os.makedirs(output_dir)

        # 保存裁剪后的图像
        output_filename = os.path.join(output_dir, filename)
        cv.imwrite(output_filename, dst)

        yield output_filename

# 遍历输入路径下的所有图片(路径文件名不能有中文),并进行裁剪操作,输出至子文件夹"qrcode_cropped"
input_path = r"C:/Users/ohnb/Desktop/tu"
output_path = os.path.join(input_path, "tugai")

try:
    for cropped_image_path in crop_qrcode_images(input_path, output_path):
        print("裁剪后的图像已保存至:", cropped_image_path)
except:
    print("文件夹里存在中文图片或者文件夹里有子文件夹")
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_58758353

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值