吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3847|回复: 23
收起左侧

[Python 转载] python进行批量图片自动识别区域进行裁剪

  [复制链接]
Appled 发表于 2022-4-1 18:18
# -*- coding: utf-8 -*-
import cv2
import numpy as np

import copy
import cv2 as cv
import os

def read_path(file_pathname):
    # 遍历该目录下的所有图片文件
    for filename in os.listdir(file_pathname):
        src = cv.imread(file_pathname + '/' + filename)
        gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)
        width = gray.shape[0] #图片行
        height = gray.shape[1]#图片列
        green_max = np.zeros(2) #一行两列0
        green_min = np.zeros(2)
        # print(green_max)

        a_list = []
        for i in range(width):
            for j in range(height):
                gray_value = gray[i, j]
                if gray_value > 20:
                    a = np.array([i, j])
                    a_list.append(a) #所有黑色区域坐标点
        #print(a_list[1])
        #print(a_list)
        # 最大坐标
        green_max = a_list[1]
        for g, k in enumerate(a_list):

            if k[0] > green_max[0]:
                green_max[0] = int(k[0])
            else:
                green_max[0] = int(green_max[0])

                if k[1] > green_max[1]:
                    green_max[1] = int(k[1])
                else:
                    green_max[1] = int(green_max[1])
                # print(green_max)

            # 最小坐标
            green_min = a_list[0]
            # print(green_min)
            for h, z in enumerate(a_list):
                # print(green_min)
                if z[0] < green_min[0]:
                    green_min[0] = z[0]
                else:
                    green_min[0] = green_min[0]

                    if z[1] < green_min[1]:
                        green_min[1] = z[1]
                    else:
                        green_min[1] = green_min[1]

            dst = src[int(green_min[0] - 80):int(green_max[0] + 60), int(green_min[1] - 60):int(green_max[1] + 60)]
        # cv.imshow('gray', dst)
            cv.imwrite('D:/Anaconda3/test7/cai09' + "/" + filename, dst)

read_path("09")

免费评分

参与人数 2吾爱币 +2 热心值 +1 收起 理由
丑丑 + 1 热心回复!
nuxingxp + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| Appled 发表于 2022-4-6 08:56
nuxingxp 发表于 2022-4-5 21:21
但是图1的大小分辨不固定的,可以吗?
已经三连

因为你的图片可能很多,所以应该只能调一个对所有图片差不都的状态,你可以看我调的参数尝试自己调一下;# 裁剪坐标为[y0:y1, x0:x1],这个坐标对应的是opencv下的坐标,就是上面的一行代码
 楼主| Appled 发表于 2022-4-5 20:35
Appled 发表于 2022-4-5 20:31
可以的,只需要调一下参


dst = src[int(green_min[0]+130):int(green_max[0]-400), int(green_min[1]):int(green_max[1])]
我刚帮你调了一下参,把上面代码换一下就行
麻烦给个一件三连呀
nuxingxp 发表于 2022-4-4 14:31
手机截图健康码,楼主能指量裁剪多余部分不
 楼主| Appled 发表于 2022-4-4 15:32
nuxingxp 发表于 2022-4-4 14:31
手机截图健康码,楼主能指量裁剪多余部分不

只要多余部分的像素值和需要保存的像素值有区分应该是可以的
nuxingxp 发表于 2022-4-4 16:02
01.jpg
02.jpg
图1截剪为图2,可以不?代码该如何写?
 楼主| Appled 发表于 2022-4-5 20:31
nuxingxp 发表于 2022-4-4 16:02
图1截剪为图2,可以不?代码该如何写?

可以的,只需要调一下参
nuxingxp 发表于 2022-4-5 21:21
Appled 发表于 2022-4-5 20:35
dst = src+130):int(green_max[0]-400), int(green_min[1]):int(green_max[1])]
我刚帮你调了一下参 ...

但是图1的大小分辨不固定的,可以吗?
已经三连
zm55555 发表于 2022-4-6 09:35
谢谢分享!
 楼主| Appled 发表于 2022-4-7 14:01

感谢您的肯定!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 05:26

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表