【Python图像处理局部放大】输入图像,选择两处不同的区域进行放大操作,然后将原始图像、处理后的两个区域以及标记合成新图像进行展示

news2025/1/11 11:12:23

NeRF-w 渲染后的图像效果的定性对比,对局部放大以观察细节效果。如下

对单张渲染后的图像,选择指定区域并进行放大操作,然后将原始图像、处理后的两个区域以及标记连线的新图像,如下图

代码

from PIL import Image, ImageDraw

# 读取并放大图片的指定区域
def process_image(image_path):
    # 打开图像
    img = Image.open(image_path)

    # 获取图像的宽度和高度
    width, height = img.size

    # 确定选中区域1的大小(假设为原始高度的三分之一)
    size1 = height // 3
    half_size1 = size1 // 2

    # 确定选中区域2的大小(假设为原始高度的五分之一)
    size2 = height // 5
    half_size2 = size2 // 2

    # 确定区域1的坐标(右上方)
    box1 = (max(0, width // 2), max(0, height // 2 - size1), min(width, width // 2 + size1), min(height, height // 2))

    # 确定区域2的坐标(左下方)
    box2 = (max(0, width // 2 - size2), max(0, height // 2), min(width, width // 2), min(height, height // 2 + size2))

    # 复制选定的区域并放大
    region1 = img.crop(box1)
    region1 = region1.resize((region1.width * 2, region1.height * 2))
    region2 = img.crop(box2)
    region2 = region2.resize((region1.width, region1.height))

    # 在原始图像上绘制矩形框
    draw = ImageDraw.Draw(img)
    draw.rectangle(box1, outline='red', width=3)
    draw.rectangle(box2, outline='blue', width=3)

    # 在子图上绘制矩形框
    draw1 = ImageDraw.Draw(region1)
    draw2 = ImageDraw.Draw(region2)
    draw1.rectangle((0, 0, region1.width, region1.height), outline='red', width=3)
    draw2.rectangle((0, 0, region2.width, region2.height), outline='blue', width=3)

    # 创建一个新的空白图像,大小为原始图像的宽度,高度为原始图像高度加上最大高度的子图以及一些间隙
    # new_height = height + max(region1.height, region2.height) + 30  # 加上一些间隙
    new_height = height + max(region1.height, region2.height)  # 加上一些间隙
    new_img = Image.new('RGB', (width, new_height))

    # 计算子图位置
    offset = 10  # 两个子图之间的间隙
    new_img.paste(img, (0, 0))
    new_img.paste(region1, (width // 2, height + offset))
    new_img.paste(region2, (0, height + offset))

    # 获取两个矩形框的中心点
    box1_center = ((box1[0] + box1[2]) // 2, box1[3])  # 取框下中心
    box2_center = ((box2[0] + box2[2]) // 2, box2[3])  # 取框下中心
    region1_center = (width // 2 + region1.width // 2, height + offset)  # 取子图上中心
    region2_center = (region2.width // 2, height + offset )  # 取子图下中心

    # 在原图区域框的下面和子图框的上面绘制红色和蓝色的连线
    draw_line = ImageDraw.Draw(new_img)
    draw_line.line([box1_center, region1_center], fill='red', width=2)
    draw_line.line([box2_center, region2_center], fill='blue', width=2)

    return new_img



# 读取5张图片并处理
image_paths = ["./test_images/001.png", "./test_images/002.png", "./test_images/003.png", "./test_images/004.png", "./test_images/005.png"]

for i, path in enumerate(image_paths):
    new_image = process_image(path)
    new_image.save(f"./test_images/new_image_{i + 1}.jpg")  # 保存新的图片

        这段代码是一个Python脚本,用于处理输入的图像文件,选择特定区域并对其进行放大操作,然后将原始图像、处理后的两个区域进行标记后的新图像保存到文件中。以下是代码的总结:

  1. 处理图像功能

    • 打开并读取图像。
    • 确定两个指定区域的位置和大小。
    • 选取指定区域并放大。
    • 在原始图像和子图上绘制矩形框。
  2. 创建新图像

    • 创建一张新的空白图像。
    • 将原始图像和两个处理后的区域放置在新图像中,并绘制连接这些区域的线条。
  3. 处理多张图像

    • 循环处理图像列表中的每张图像。
    • 保存处理后的图像。

总结:

该代码用于处理图像中的特定区域并放大,并在新图像上显示原始图像、处理后的两个区域,以及用颜色标记连接这些区域。

注意:

  • 在处理过程中,子图的位置被计算,然后这些子图被粘贴到新图像中。
  • 连接线的位置是根据处理后的区域和原始图像区域的中心点进行绘制。

对以上代码进行改进,由鼠标选中需要放大的两个图像区域 。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1150102.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

预制件二维码怎么做

凡尔码的二维码管理系统不仅提供了高效便捷的二维码生成功能,还配备了一套完善的预制构件管理方案。通过扫描二维码,用户可以查看预制构件的详细信息,包括项目名称、构建名称、安装位置、重量、生产日期、生产单位、产品出厂检验材料、尺寸等…

《2023整车操作系统发展趋势研究》丨附下载

✦ ✦✦ ✦✦ ✦✦ ✦ 1996年,Gartner提出SOA其核心思想在于“通过将庞大的计算系统按照实际业务拆分为独立部署的大小合适的功能模块,提高功能单元的复用性,降低产品开发的复杂度和成本”。 如今,软件定义汽车领域引入SOA&…

竟然还有人不知道这个app?注册即可在线管理各类地理空间数据

「四维轻云」是一款轻量化的地理空间数据管理云平台,具有项目管理、数据浏览、数据分享、场景编辑、素材库等功能。 此外,用户还可以在应用商店及官网下载安装“四维轻云”APP。安装完成后,用户可以在APP中管理、查看及分享倾斜摄影模型、激…

一文看懂完整的研究生生活规划

很多人在刚从本科步入研究生生活的时候,总是对于自己三年的研究生生活没有清晰的规划,总是在各种浪费时间,没有拿到想要的东西,也没有学到想学的东西,亦或是没有找到理想的工作,最后草草的毕业。这个时候我们就应该对于自己的研究生生活有个清晰的规划,帮助我们不留遗憾…

集群/堆叠的常用部署实施方式,你会吗?

你们好,我的网工朋友。 交换机的连接方式大家应该都知道吧,一共有三种,分别是:级联、堆叠和集群。 级联一般用来实现多台交换机之间的互相连接。 堆叠和集群,就总有网工把这两给搞迷糊了。 堆叠就是将多台支持堆叠特…

python_PyQt5日周月K线纵向对齐显示_1_数据处理

目录 写在前面: 图形结果显示: 数据设计: 代码: 从日数据中计算周数据、月数据 生成图形显示需要的数据格式 写在前面: “PyQt5日周月K线纵向对齐显示”,将分三篇博文描述 1 数据处理。将数据处理成…

Python学习——Day12

目录 一、实例方法、类方法、静态方法 1.1实例方法 1.2类方法 1.3静态方法 1.4实例 二、 __slots__ 三、错误和异常 3.1语法错误 3.2异常 3.3异常处理 一、实例方法、类方法、静态方法 1.1实例方法 实例方法入参第一个值,默认self指代当前调用的对象,不建…

数字转型下的保险业:可视化大屏的光明未来

在当今不确定性充斥的世界中,保险行业扮演着关键的社会角色。无论是财产保险、健康保险还是生命保险,它们都提供了一种安全网,帮助个人和企业在不可预测的风险面前保护自己。然而,随着信息时代的来临,数据变得愈发重要…

FreeRTOS系统下看门狗定时器的使用总结

文章目录 前言定时器分类何为看门狗定时器 系统复位系统级看门狗SWDT的使用1.看门狗配置2、独立监测多任务方式 前言 本文记录自己使用看门狗定时器的过程,起因是系统不知名原因总是跑挂,查了很久找不到原因(排除了变量溢出、中断冲突等&…

解决找不到vcruntime140.dll无法执行代码的方法分享

在我们用电脑的过程中,总免不了碰到些问题,比如“找不到vcruntime140.dll”。这通常是我们在运行某些软件的时候,电脑找不到它需要的一个叫动态链接库的文件。这个问题有很多原因,比如软件安装的时候出了问题,系统文件…

2023上海初中生古诗文大会初选将于11月5日开始,划重点来了

好消息! 根据主办方通知,2023年上海市中学生古诗文大会(初中组),以下简称初中生古诗文大会,初选将于11月5日开始。 有许多家长和初中同学关心,初中生古诗文大会如何参加?考多长时间…

Vue使用 IndexDB vue操作IndexDB数据库 Vue操作IndexDB数据库

Vue使用 IndexDB vue操作IndexDB数据库 Vue操作IndexDB数据库 Vue使用 IndexDB vue操作IndexDB数据库 Vue操作IndexDB数据库安装 IndexDB类库引入 localForage测试 新增数据、获取数据 Vue使用 IndexDB vue操作IndexDB数据库 Vue操作IndexDB数据库 大部分场景使用 LocalStore都…

Windows域控制器的部署以及加入

域控制器:Windows Server 2022 域内主机:Windows7、Windows Server 2008 R2 安装部署预控 服务器管理器-添加角色和功能,一路下一步,到“服务器角色”,勾选“Active Directory 域服务”,一路下一步直到安…

审核 Microsoft SQL Server 日志

手动审核数据库活动是一项艰巨的任务,有效完成审计的最佳方法是使用简化和自动化数据库监控的综合解决方案,该解决方案还应使数据库管理员能够监控、跟踪和即时识别任何操作问题的根本原因,并实时检测对机密数据的未经授权的访问。 什么是 S…

基于SpringBoot+Vue实现前后端分离的房屋租赁系统

大家好✌!我是Dwzun。很高兴你能来阅读我,我会陆续更新Java前端、后台、数据库、项目案例等相关知识点总结,还为大家分享优质的实战项目,本人在Java项目开发领域有多年的经验,陆续会更新更多优质的Java实战项目&#x…

ARL灯塔安装与使用

ARL灯塔安装与使用 1. 系统要求2. ARL灯塔安装2.1. docker环境安装2.1.1. 更新yum包2.1.2. 卸载老版docker2.1.3. 安装docker所需要的依赖包2.1.4. 设置yum源2.1.5. 查看仓库中docker版本2.1.6. 安装docker最新版2.1.7. docker设置2.1.8. docker其它命令 2.2. 安装docker-compo…

世微 60V高端电流采样降压恒流驱动IC LED电源驱动器AP51656

1产品描述 AP51656是一款连续电感电流导通模式的降压恒流源,用于驱动一颗或多颗串联LED输入电压范围从 5 V 到 60V,输出电流 最大可达 1.5A 。根据不同的输入电压和 外部器件, 可以驱动高达数十瓦的 LED。 内置功率开关,采用高端…

ModelMapper

ModelMapper用于将视图对象和实体类进行转换。 依赖: 单例模式: API控制器: 使用:

Mac电脑矢量编辑必备:Sketch 最新中文 for mac

Sketch是一款专门为Mac设计的矢量图形绘制软件,广泛应用于UI/UX设计领域。它拥有丰富的设计工具和功能,使得设计师可以轻松创建高质量的界面设计和交互原型。Sketch基于矢量图形,可以无损放大和缩小,保证设计的清晰度和质量。它还…

Linux的简介和环境搭建

简介 Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个…