python - opencv批量截取图像指定区域

eg. 用来截取发票的印章区域,用于图像分割

"""
处理数据集 和 标签数据集的代码:(主要是对原始数据集裁剪)
    处理方式:分别处理
    注意修改 输入 输出目录 和 生成的文件名
    output_dir = "./label_temp"
    input_dir = "./label"
"""

import cv2
import os
import sys

output_dir = "./temp_dir"           # 保存截取的图像目录
input_dir = "./original_image"      # 读取图片目录表
index = 1
for (path, dirnames, filenames) in os.walk(input_dir):
    for filename in filenames:
        print('正在处理图像: %s' % index)
        img_path = path+'/'+filename
        img = cv2.imread(img_path)
        gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 转为灰度图片
        weight_01 = gray_img.shape[1]
        print("图像宽度:",weight_01)
        if weight_01>1600:                           # 正常发票
            cropImg = gray_img[50:1050, 720:1720]    # 裁剪【行数据范围:列数据范围】
            cropImg = cv2.resize(cropImg, None, fx=0.5, fy=0.5,
                                 interpolation=cv2.INTER_CUBIC) #缩小图像
            cv2.imwrite(output_dir + '/' + str(index) + '.png', cropImg)
        else:                                        # 卷帘发票
            cropImg_01 = gray_img[40:540, 100:600]
            cropImg_02 = gray_img[600:1100, 80:580]
            cv2.imwrite(output_dir + '/cropImg_01_' + str(index) + '.png', cropImg_01)
            cv2.imwrite(output_dir + '/cropImg_02_' + str(index) + '.png', cropImg_02)

        index += 1
    key = cv2.waitKey(30) & 0xff                 # 不断刷新图像,频率时间为 30ms
    if key == 27:
        sys.exit(0)

import cv2
import os

output_dir = "./face_dataset/test_faces"           # 保存截取的图像目录
input_dir = "./face_dataset/test_faces"      # 读取图片目录表
index = 1
for (path, dirnames, filenames) in os.walk(input_dir):
    for filename in filenames:
        print('正在处理图像: %s' % index)
        img_path = path+'/'+filename
        img = cv2.imread(img_path)
        weight = img.shape[1]
        print("图像宽度:",weight)
        if weight>1200:
            cropImg = img[:, 200:int(weight-200)]    # 裁剪【行数据范围:列数据范围】
            cropImg = cv2.resize(cropImg, None, fx=0.5, fy=0.5,
                                 interpolation=cv2.INTER_CUBIC) #缩小图像
            cv2.imwrite(output_dir + '/' +str(filename[:-4])+ str(index) + '.png', cropImg)
        else:
            pass
        index += 1

From: python—opencv批量截取图像指定区域(获取目录下所有文件)

发布了1669 篇原创文章 · 获赞 356 · 访问量 233万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 游动-白 设计师: 上身试试

分享到微信朋友圈

×

扫一扫,手机浏览