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

聖光之護
发布: 2025-02-28 23:54:23
原创
1129人浏览过

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

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

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

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

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

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

吉卜力风格图片在线生成
吉卜力风格图片在线生成

将图片转换为吉卜力艺术风格的作品

吉卜力风格图片在线生成 121
查看详情 吉卜力风格图片在线生成

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

import cv2
import numpy as np

# ... (加载图像代码,此处省略)...

h, w = img.shape[:2]
nRows, nCols = 4, 4
sub_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, 44
sub_imgs[r, c, y1:y2, x1:x2] = (0, 0, 255)

# 将子图坐标转换为原图坐标
x1_original = sub_w * c + x1
y1_original = sub_h * r + y1
x2_original = sub_w * c + x2
y2_original = sub_h * r + y2

# 在原图上绘制矩形
img[y1_original:y2_original, x1_original:x2_original] = (0, 0, 255)

# ... (显示图像代码,此处省略)...
登录后复制

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

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

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

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

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号