Python图片裁剪后如何将局部坐标转换为原图坐标?

python图片裁剪后如何将局部坐标转换为原图坐标?

Python图像裁剪与原图坐标映射

在Python图像处理中,经常需要裁剪图像并把裁剪后图像的坐标映射回原始图像坐标。本文将详细讲解如何使用Python进行图像裁剪以及如何将裁剪图像坐标转换回原始图像坐标。

假设有一张1000×1000像素的图像,需要将其分割成多个小图进行处理,并在其中一个小图上绘制矩形。矩形坐标系是小图的局部坐标系,需要将其转换到原始图像的全局坐标系。

可以使用OpenCV或Pillow库进行图像裁剪。OpenCV使用NumPy数组表示图像,可以直接使用NumPy切片进行裁剪,例如img[y1:y2, x1:x2].copy()可以裁剪出(x1, y1)到(x2, y2)区域的图像。 如果需要平均分割图像,可以使用np.hsplitnp.vsplit函数(前提是图像宽高能被分割数整除),否则可以使用np.array_split函数,该函数会处理无法整除的情况。

立即学习“Python免费学习笔记(深入)”;

以下代码片段演示了如何使用OpenCV进行图像裁剪和坐标转换:

import cv2import numpy as np# ... (加载图像代码,此处省略)...h, w = img.shape[:2]nRows, nCols = 4, 4sub_h, sub_w = h // nRows, w // nCols# 分割图像sub_imgs = np.array(np.hsplit(np.array(np.hsplit(img, nCols)), nRows))# 在子图(r,c)中(x1,y1)到(x2,y2)绘制矩形r, c, x1, y1, x2, y2 = 2, 3, 10, 20, 54, 44sub_imgs[r, c, y1:y2, x1:x2] = (0, 0, 255)# 将子图坐标转换为原图坐标x1_original = sub_w * c + x1y1_original = sub_h * r + y1x2_original = sub_w * c + x2y2_original = sub_h * r + y2# 在原图上绘制矩形img[y1_original:y2_original, x1_original:x2_original] = (0, 0, 255)# ... (显示图像代码,此处省略)...

代码中,图像被分割成4×4个子图,然后在一个子图上绘制矩形。关键是子图坐标到原图坐标的转换:原图坐标等于子图坐标加上子图在原图中的起始坐标。

Pillow库也提供crop方法进行图像裁剪,用法与OpenCV类似,但Pillow库更擅长图像处理的其他操作,例如图像格式转换和图像滤镜。 使用Pillow进行图像裁剪和坐标变换的代码示例需要根据具体的分割函数逻辑进行坐标转换,以处理图像无法整除的情况。

通过以上方法,可以方便地进行图像裁剪,并准确地将裁剪后图像坐标转换回原图坐标,从而在原图上进行后续处理和分析。

以上就是Python图片裁剪后如何将局部坐标转换为原图坐标?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1357652.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月13日 21:08:36
下一篇 2025年12月13日 21:08:43

相关推荐

发表回复

登录后才能评论
关注微信