当前位置: 首页 > news >正文

python 根据坐标将图片进行裁图

功能”

        1.给一个图片,并给出图片中所有目标的坐标

        2.将图中给出的坐标用框给标注出来

        3.经典需求,通常称为“阅读顺序排序”或“Z字排序”。你需要先按行(从上到下)排序,在同一行内再按列(从左到右)排序。将排完序的多个框进行编号

        4.对目标框进行裁图

import cv2
import numpy as np
import osdef test():path = "D:\LAELAOI\Test"pointtxt = os.path.join(path, "label_position.txt")with open(pointtxt, 'r')as f:content = f.readlines()print(content)boxes = []for i in content:parts = i.split(',')file = parts[0]x1, x2, y1, y2 = parts[2],parts[3],parts[4],parts[5].strip()print(file, x1, y1, x2, y2)boxes.append([x1, y1, x2, y2])# 进行排序# key=lambda box: (int(box[1]), int(box[0])) 表示:#   1. 先按 box 的第 1 个元素(y1)进行升序排序(从上到下)#   2. 如果 y1 相同,再按第 0 个元素(x1)进行升序排序(从左到右)#   3. int() 是为了将字符串转为数字,确保正确排序sorted_boxes = sorted(boxes, key=lambda box: (int(box[1]), int(box[0])))img = cv2.imread(r"D:\LAELAOI\Test\L_main_CAM_basler.jpg")# img = cv2.resize(img, (1500, 1000))copy_img = img.copy()# 遍历排序后的列表,进行编号(从1开始)# for index, box in enumerate(sorted_boxes, 1):#     x1, x2, y1, y2 = int(box[0]), int(box[1]), int(box[2]), int(box[3])#     cv2.rectangle(copy_img,(int(box[0]),int(box[1])), (int(box[2]),int(box[3])), (0,0, 255), 2)#     print(f"编号: {index}, 坐标: {box}")# --- 主要修改和新增的逻辑在这里 ---for index, box in enumerate(sorted_boxes, 1):# 1. 将字符串坐标转换为整数x1, y1, x2, y2 = map(int, box)# 2. 【关键修复】确保坐标顺序正确,防止计算负数半径# 重新计算左上角和右下角坐标,确保 x1 <= x2, y1 <= y2top_left_x = min(x1, x2)top_left_y = min(y1, y2)bottom_right_x = max(x1, x2)bottom_right_y = max(y1, y2)# 3. 绘制矩形框(使用修正后的坐标)cv2.rectangle(copy_img, (top_left_x, top_left_y), (bottom_right_x, bottom_right_y), (0, 0, 255), 2)# --- 新增代码开始 ---# 4. 计算矩形中心点center_x = (top_left_x + bottom_right_x) // 2center_y = (top_left_y + bottom_right_y) // 2# 7. 在圆圈中心写入编号font = cv2.FONT_HERSHEY_SIMPLEXtext = str(index)# 计算文字大小,以便居中(text_width, text_height), baseline = cv2.getTextSize(text, font, 1, 2)# 计算文字的坐标,使其在圆圈内居中text_x = center_x - text_width // 2text_y = center_y + text_height // 2# 绘制文字# 参数:图像, 文字, 坐标, 字体, 大小, 颜色(白色), 粗细cv2.putText(copy_img, text, (text_x, text_y), font, 10, (0, 0, 255), 3)# --- 新增代码结束 ---print(f"编号: {index}, 原始坐标: {box}, 修正后坐标: {[top_left_x, top_left_y, bottom_right_x, bottom_right_y]}")cropped_img = img[y1:y2, x1:x2]savefile = r"D:\LAELAOI\Test\{}.jpg".format(index)print(savefile)cv2.imwrite(savefile, cropped_img)cv2.imwrite(r"D:\LAELAOI\Test\1111L_main_CAM_basler.jpg", copy_img)cv2.imshow('rr', copy_img)cv2.waitKey(0)cv2.destroyAllWindows()
if __name__ == '__main__':test()

效果图

http://www.dtcms.com/a/590410.html

相关文章:

  • 四川省安监站网址安庆网站建设推荐秒搜科技
  • 烟台网站建设的方法有哪些wordpress主播主题
  • 网站集约化建设讲话稿网页设计图片位置怎么设置
  • 清远住房和城乡建设部网站wordpress权限ip
  • 矢量网站动画怎么做崇卅市网站建设
  • xiyuetaCMS 网站前台在线修改功能:让内容管理变得简单快捷
  • 基于微调模型兜底的RAG系统:错误检测与召回率评估
  • 做网站的如何说服客户网站制作公司合肥
  • RHCSA作业3
  • 网站建设用免费素材如何做好网站推
  • Git高效开发:常用命令速查指南
  • 还有哪些网站做产品众筹应届毕业生简历模板
  • 南京做企业网站公司哪家好如何在手机上制作网站
  • 视图、存储过程与函数
  • JavaSE语法巩固——图书管理系统
  • Java 抽象类与接口深度解析:从概念到实战应用
  • 软件测试——自动化测试常用函数(超详细)
  • 韶关企业网站建设好看的seo网站
  • 网站网页区别是什么产品展示类网站源码
  • 网站规划的步骤微信开发公众平台
  • 怎么自己做直播网站吗制作公司网站一般多久能好
  • 公司合法网站域名怎么注册水冷眸WordPress
  • 网站开发应财务如何记账wordpress 字符替换插件
  • 网站建设运营成本什么是网络营销评估主要评估哪些方面
  • 升级 macOS 26.1 之后 MagicMouse2 疯狂卡顿飘移,已解决
  • 无锡高端网站建设舆情信息网站
  • 网站建设的成功之处有哪些怎么做一个自己公司的网页
  • 怎么建设自己产品网站加强红色网站建设
  • 【QT开发】天气预报项目(详细注释版)
  • Vue嵌套(多级)路由