陈程的技术博客

  • 关于作者
全栈软件工程师
一个专注于技术研究创新的程序员
  1. 首页
  2. python
  3. 正文

python 批量剪切图片指定区域

2021年6月1日 757点热度 0人点赞 0条评论
import cv2
import os
import sys
import time
import json



#path = "JPEGImages\\3.jpeg"
#image = cv2.imread(path)
#cropImg = image[0:200,0:200]
#cv2.imwrite("ttt.jpg",cropImg)
def main():
    output_dir = "img_cut"  
    input_dir = "JPEGImages"         
    img_paths = get_img(input_dir)
    print('图片获取完成 。。。!')
    cut_img(img_paths,output_dir)

def cut_img(img_paths,output_dir):
    cindex=1;
    for img in img_paths:
        json_path = "Annotations\\" + img.split('/')[1].split('.')[0] + ".json"
        json_data = read_json(json_path)
        datalist = json_data["labels"]
        image = cv2.imread(img)
        index=1
        for data in datalist:
            name = data["name"]	+"_cut"
            rect_y1 = int(data["y1"])
            rect_y2 = int(data["y2"])
            rect_x1 = int(data["x1"])
            rect_x2 = int(data["x2"])
            cropImg = image[rect_y1:rect_y2,rect_x1:rect_x2]
            cv2.imwrite(name+"\\"+str(cindex)+"_"+str(index)+".jpg",cropImg)
            index+=1
        cindex+=1
        print("裁剪第"+str(cindex)+"个图片完成")



def read_json(filename):
    jsontext = ""
    with open(filename, 'r',encoding='utf-8') as file_object:
        jsontext = file_object.read()
    jsontext = json.loads(jsontext,encoding='utf-8')
    return  jsontext

def get_img(input_dir):
    img_paths = []
    for (path,dirname,filenames) in os.walk(input_dir):
        for filename in filenames:
            img_paths.append(path + '/' + filename)
    print("img_paths:",img_paths)
    return img_paths

def get_json(input_dir):
    img_paths = []
    for (path,dirname,filenames) in os.walk(input_dir):
        for filename in filenames:
            data_json = read_json(path + '/' + filename)
            img_paths.append(path + '/' + filename)
    print("json_paths:",img_paths)
    return img_paths

if __name__ == '__main__':
    main()

 

标签: python
最后更新:2021年6月1日

博主

全栈工程师,侧重项目技术解决方案规划和开发

打赏 点赞
< 上一篇
下一篇 >

文章评论

取消回复

分类
  • .NET (65)
  • docker (3)
  • linux (12)
  • python (20)
  • web (14)
  • 小程序 (4)
  • 数据库 (2)
  • 未分类 (4)
  • 杂七杂八 (10)
标签聚合
C# nginx DevExpress python js centos linux winform
最新 热点 随机
最新 热点 随机
.NET开发手册标准参考 招募兼职前端开发 Centos安装dotnet6环境 VS上切换分支,vs编译运行出现bug,A fatal error was encountered彻底解决方案 用C#封装一个线程安全的缓存器,达到目标定时定量更新入库 C#通过特性的方式去校验指定数据是否为空
怎样用JS写一个下拉加载数据的table 通过tablesorter.js ,table表格快速实现自动排序 winform 绘制无边框四周阴影 批量合并pdf文件 xml序列化和反序列化代码 C#读写锁的一种方便写法

COPYRIGHT © 2021 陈程的技术博客. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS