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

Python 图像中矩形四角二维坐标和归一化一维坐标相互转换

Python 将图像中矩形四角二维坐标转化为归一化一维坐标

计算原理:根据矩形四角的二维坐标得出矩形中心的坐标,再计算出矩形的宽和高,由此可将四个二维坐标转化为四个一维坐标 。归一化即x轴的值除以图像宽度,y轴的值除以图像高度。

[中心坐标x, 中心坐标y, 矩形宽, 矩形高]
def normalize_bbox_coordinates(bbox_coords, image_width=500, image_height=500):"""将矩形框坐标归一化到[0,1]范围:param bbox_coords: 矩形框四个坐标点 [(x1,y1), (x2,y2), (x3,y3), (x4,y4)]:param image_width: 图片宽度,默认500:param image_height: 图片高度,默认500:return list: 归一化后的坐标 [x_center, y_center, width, height]"""# 提取所有x坐标和y坐标x_coords = [point[0] for point in bbox_coords]y_coords = [point[1] for point in bbox_coords]# 计算边界框的最小和最大坐标x_min = min(x_coords)x_max = max(x_coords)y_min = min(y_coords)y_max = max(y_coords)# 计算中心点坐标和宽高width = x_max - x_minheight = y_max - y_minx_center = x_min + width / 2y_center = y_min + height / 2# 归一化到[0,1]范围x_center_norm = x_center / image_widthy_center_norm = y_center / image_heightwidth_norm = width / image_widthheight_norm = height / image_heightreturn [x_center_norm, y_center_norm, width_norm, height_norm]bbox_coords = [(125, 125), (125, 375), (375, 375), (375, 125)]
normalized_coords = normalize_bbox_coordinates(bbox_coords)
print(f"原始坐标: {bbox_coords}")
print(f"归一化坐标: {normalized_coords}")
print(f"验证结果: {[round(coord, 1) for coord in normalized_coords]}")

原始坐标: [(125, 125), (125, 375), (375, 375), (375, 125)]
归一化坐标: [0.5, 0.5, 0.5, 0.5]
验证结果: [0.5, 0.5, 0.5, 0.5]

Python 将图像中归一化一维坐标转化为矩形四角二维坐标

def denormalize_coordinates(normalized_coords, image_width=500, image_height=500):"""将归一化坐标复原到原始图像尺寸:param normalized_coords: 归一化坐标 [x_center_norm, y_center_norm, width_norm, height_norm]:param image_width: 图片宽度,默认500:param image_height: 图片高度,默认500:return tuple: (center_x, center_y, width, height) 原始坐标和尺寸"""if len(normalized_coords) != 4:raise ValueError("归一化坐标必须是4个值: [x_center, y_center, width, height]")x_center_norm, y_center_norm, width_norm, height_norm = normalized_coords# 复原中心坐标center_x = x_center_norm * image_widthcenter_y = y_center_norm * image_height# 复原宽度和高度width = width_norm * image_widthheight = height_norm * image_heightreturn center_x, center_y, width, heightdef denormalize_to_corners(normalized_coords, image_width=500, image_height=500):"""将归一化坐标复原为四个角点坐标:param normalized_coords: 归一化坐标 [x_center_norm, y_center_norm, width_norm, height_norm]:param image_width: 图片宽度,默认500:param image_height: 图片高度,默认500:return list: 四个角点坐标 [(x1,y1), (x2,y2), (x3,y3), (x4,y4)]"""center_x, center_y, width, height = denormalize_coordinates(normalized_coords, image_width, image_height)# 计算角点坐标x_min = center_x - width / 2x_max = center_x + width / 2y_min = center_y - height / 2y_max = center_y + height / 2# 返回四个角点(顺时针顺序)corners = [(x_min, y_min),  # 左上(x_min, y_max),  # 左下(x_max, y_max),  # 右下(x_max, y_min)   # 右上]return corners# 归一化坐标
normalized_coords = [0.5, 0.5, 0.5, 0.5]# 复原中心坐标和尺寸
center_x, center_y, width, height = denormalize_coordinates(normalized_coords)
print(f"归一化坐标: {normalized_coords}")
print(f"复原中心坐标: ({center_x}, {center_y}), 尺寸: {width}x{height}")# 复原为四个角点
corners = denormalize_to_corners(normalized_coords)
print(f"复原角点坐标: {corners}")# 验证复原结果是否与原始坐标一致
original_corners = [(125, 125), (125, 375), (375, 375), (375, 125)]
print(f"原始角点坐标: {original_corners}")
print(f"复原是否正确: {corners == original_corners}")

归一化坐标: [0.5, 0.5, 0.5, 0.5]
复原中心坐标: (250.0, 250.0), 尺寸: 250.0x250.0
复原角点坐标: [(125.0, 125.0), (125.0, 375.0), (375.0, 375.0), (375.0, 125.0)]
原始角点坐标: [(125, 125), (125, 375), (375, 375), (375, 125)]
复原是否正确: True

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

相关文章:

  • 做电商网站有什么用万网网站建设教程
  • 网站 设计风格wordpress 加链接地址
  • 中山市企业网站seo营销工具wordpress 搜索 自定义字段
  • 05、Python从入门到癫狂:数据库操作与其他
  • 网页制作报价徐州seo外包平台
  • jQuery简化了事件的绑定和解除,常用的方法有.on()和.off()
  • [Dify] 知识库切片逻辑解析:段落切分 vs 语义块切分,该怎么选?
  • [Windows] 发票识别工具。支持xml、pdf、ofd文件
  • 流量安全——基于Sentinel实现限流,熔断,降级
  • Semaphore GUI 详细介绍
  • 中山网站优化营销做专业课视频课的网站
  • 元表纪基于一个Excel表实现一键发货、打印面单
  • 企业外贸网站建设建设一个直播网站多少钱
  • 网站建设需要基础吗电子商务网站建设与管理是什么
  • 【LeetCode - 每日1题】换水问题1
  • 资深面试之MySQL 问题及解答(一)
  • 自定义脚手架
  • 云空间布置网站seo顾问赚钱吗
  • 网络设备中的硬件转发和软件转发
  • 永州建设网站公司网站开发费的税率是多少
  • js时间格式转化器
  • 攻防世界-Web-Web_php_unserialize
  • Deep Learning|01 RBF Network
  • 指针步长:C/C++内存操控的核心法则
  • 服装网站建设分析wordpress模板如何用
  • wordpress后台菜单管理程序代码优化网站
  • Windows 常用短文件名(8.3 格式)介绍
  • 【stm32】【edgetx】解析链接脚本文件(ld)
  • 商务网站构建与维护网站建设所有权
  • C语言速成秘籍——跳转语句(goto)