【OpenCV实现图像:OpenCV利用Python创作热力图】

文章目录

    • 概要
    • 读取图像
    • 图像灰度化
    • **像素化效果**
    • 小结

概要

热力图是一种强大的统计图表,通过对数据进行色彩映射,直观展示了数据分布的热度和密度。在绘制热力图时,关键在于指定颜色映射的规则,这决定了图中不同数值的呈现方式。通常,较大的数值以深色或偏暖的色彩表示,而较小的数值则以浅色或偏冷的色彩呈现,从而使观察者能够迅速理解数据的相对大小和趋势。

读取图像

首先,我们来读取样例图像,并对其进行相应的crop操作。
样例代码如下:


import numpy as np
import matplotlib.pyplot as plt
import skimage.io as io
img = plt.imread("img_2.png")
# crop
img_cut = img[0:400,:,:]
plt.figure()
plt.imshow(img_cut)
plt.show()

在这里插入图片描述

图像灰度化

由于热力图主要用于可视化二维矩阵,所以我们需要将彩色图转化为灰度图,代码如下:


import numpy as np
import matplotlib.pyplot as plt
import skimage.io as io
img = plt.imread("img_2.png")
# crop
img_cut = img[0:400,:,:]
plt.figure()
plt.imshow(img_cut)
plt.show()
from skimage.color import rgb2gray
gray_img = rgb2gray(img_cut)
plt.imshow(gray_img,cmap='gray')
plt.show()

在这里插入图片描述

像素化效果

像素化效果是一种图像处理技术,旨在赋予图像一种艺术化的像素化外观。该操作的关键步骤是将图像划分为非重叠的块,块的大小决定了最终像素化效果的粒度。通常,块的尺寸越大,图像看起来越像是由像素块组成。

from PIL import Imagedef pixelate(image_path, pixel_size):# 打开图片img = Image.open(image_path)# 获取图片的宽度和高度width, height = img.size# 计算每个像素块的大小pixel_size = max(1, pixel_size)block_size = (width // pixel_size, height // pixel_size)# 缩小图像,然后放大回原始大小,实现像素化效果img = img.resize(block_size, resample=Image.NEAREST)img = img.resize((width, height), resample=Image.NEAREST)# 保存处理后的图像output_path = "pixelated_" + str(pixel_size) + "_" + image_pathimg.save(output_path)# 使用例子
image_path = "img_2.png"
pixel_size = 10
pixelate(image_path, pixel_size)

在这里插入图片描述

热力图绘制

继处理灰度图和像素化之后,我们将进一步绘制热力图。热力图是通过色彩映射展示数据分布的一种方式,我们将使用Seaborn库绘制热力图,并以图像的像素块作为数据点。

首先,我们需要安装Seaborn库,可以使用以下命令:

pip install seaborn

接下来,我们将使用处理过的灰度图像进行热力图绘制:

import seaborn as sns
import matplotlib.pyplot as plt
from PIL import Image
import numpy as npdef heatmap_from_image(image_path, pixel_size):# 打开处理后的图片img = Image.open("pixelated_" + str(pixel_size) + "_" + image_path)# 将图像转为NumPy数组img_array = np.array(img)# 创建热力图plt.figure(figsize=(10, 8))sns.heatmap(img_array[:, :, 0], cmap="viridis", cbar=False)# 设置图像标题和坐标轴标签plt.title("Heatmap from Pixelated Image")plt.xlabel("X-axis")plt.ylabel("Y-axis")# 显示热力图plt.show()# 使用例子
heatmap_from_image("img_2.png", 10)

此代码将像素化的图像转换为NumPy数组,并使用Seaborn库绘制热力图。我们使用viridis颜色映射,您可以根据需要选择其他颜色映射。

热力图调色板

Seaborn库提供了丰富的调色板选项,允许您自定义热力图的颜色样式。在上面的代码中,我们使用了viridis调色板,如果您想尝试其他调色板,只需修改cmap参数即可。例如,我们将代码中的"cmap"参数改为"coolwarm",效果如下:

import seaborn as sns
import matplotlib.pyplot as plt
from PIL import Image
import numpy as npdef heatmap_with_custom_palette(image_path, pixel_size, palette_name):# 打开处理后的图片img = Image.open("pixelated_" + str(pixel_size) + "_" + image_path)# 将图像转为NumPy数组img_array = np.array(img)# 创建热力图plt.figure(figsize=(10, 8))sns.heatmap(img_array[:, :, 0], cmap=palette_name, cbar=False)# 设置图像标题和坐标轴标签plt.title(f"Heatmap with {palette_name} Palette")plt.xlabel("X-axis")plt.ylabel("Y-axis")# 显示热力图plt.show()# 使用例子
heatmap_with_custom_palette("img_2.png", 10, "coolwarm")

通过修改palette_name参数,您可以使用Seaborn支持的不同调色板,如"coolwarm"、"viridis"等。

小结

热力图是一种强大的数据可视化工具,通过色彩映射直观展示数据的分布和密度。在创建热力图时,我们通过图像处理的方式,包括图像裁剪、灰度化和像素化,为数据准备了合适的基础。通过结合图像处理和数据可视化的方法,能够更生动地呈现数据的特征,使得分析和理解变得更加直观。这一过程不仅仅适用于图像数据,还可以用于其他二维数据的热力图绘制,为数据分析提供了更多的可能性。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【React-Router】路由导航

1. 概念 路由系统中的多个路由之间需要进行路由跳转&#xff0c;并且在跳转的同时有可能需要传递参数进行通信。 2. 声明式导航 // /page/Login/index.jsimport { Link } from react-router-dom const Login () > {return <div>登录页{/* 解析成 a 链接 */}<Li…

利用ros实现单片机通讯(转载)

我觉得如果使用这个人的micro_ros通信协议&#xff0c;就不用再去Ubuntu或者Windows上面自己写驱动程序了&#xff0c; 利用micro_ros实现esp32与ros2的通讯 Tianci ​ 天津大学 工学博士 参考&#xff1a;https://github.com/micro-ROS/micro_ros_arduino https://blog.cs…

04 后端增删改查【小白入门SpringBoot + Vue3】

项目笔记&#xff0c;教学视频来源于B站青戈 https://www.bilibili.com/video/BV1H14y1S7YV 保证前面的都功能都实现后&#xff0c;接着往下走。 查 分页 接下来&#xff0c;实现前端页面分页功能。 前端分页组件 打开elementplus官网&#xff0c;找到合适的分页组件&…

软件测试工具常用的都有哪些

软件测试工具是用于辅助软件测试的软件工具&#xff0c;可以帮助测试人员执行测试用例、记录测试结果、跟踪缺陷状态等&#xff0c;提高测试效率和质量。以下是一些常见的软件测试工具&#xff1a; 一、AutoRunner自动化测试工具 AutoRunner(简称AR&#xff09;是国内自主研发…

python使用selenium webDriver时 报错

可能原因和解决&#xff1a; 1. python 解释器 ----> 设置 2. 浏览器版本 与 浏览器驱动版本不一致 ----> 安装同一版本的 (下载chromedriver | 谷歌驱动更高版本的测试版) 参考&#xff1a;Python使用Selenium WebDriver的入门介绍及安装教程-CSDN博客 Selenium安…

企业网盘哪家好?值得信赖的品牌推荐

企业网盘可谓是当下热门的企业服务之一&#xff0c;市面上也出现了非常多企业网盘工具。那么&#xff0c;企业网盘哪家好&#xff1f;哪个品牌更值得信赖呢&#xff1f; 企业网盘哪家好&#xff1f; Zoho Workdrive企业网盘一定榜上有名&#xff0c;Zoho Workdrive企业网盘是著…

IDEA JRebel安装使用教程

1、下载插件 版本列表&#xff1a;https://plugins.jetbrains.com/plugin/4441-jrebel-and-xrebel/versions 下载&#xff1a;JRebel and XRebel 2022.4.1 这里下载2022.4.1版本&#xff0c;因为后续新版本获取凭证会比较麻烦。下载完成会是一个压缩包。 2、安装 选择第一步…

微软Copilot即将对大陆开放,一起来看看都有什么好用的功能

微软发布了Copilot&#xff0c;12月1日起对大陆用户开放&#xff0c;以下是Copilot的11个新功能&#xff0c;你一定不想错过&#xff1a;1. PowerPoint&#xff1a; 将Word文档转换为演示文稿。从文件中快速创建演示文稿。通过关键幻灯片总结冗长的演示文稿。使用提示添加新的…

2024贵州大学计算机考研分析

24计算机考研|上岸指南 贵州大学 贵州大学计算机科学与技术学院&#xff08;贵州大学省级示范性软件学院&#xff09;位于贵州省贵阳市花溪区贵州大学东校区。 计算机科学与技术学院&#xff08;软件学院&#xff09;自1972年创办计算机软件本科专业开始&#xff0c;至今已有…

cadence layout lvs时出现error

Error&#xff1a;Schematic export failed or was cancelled.Please consult the transcript in the viewer window. 解决办法同下&#xff1a; cadence layout lvs时出现error-CSDN博客

Unity 头顶图文字性能优化

如图&#xff1a;常规的排版&#xff0c;会有很多Batches。这是优化后的Batches只有3。 常用解决方案&#xff1a; 1、创建两个Canvas&#xff0c;一个放所有文本Text&#xff0c;一个放所有Image。但这里有会有两个问题&#xff1a;一旦文字夹在两个Image中间&#xff0c;还有…

掌握Katalon Studio 导入 swagger 接口文档,接口测试效率提升100%

katalon studio大家都已经不陌生了&#xff0c;是一款现在非常主流的自动化测试工具&#xff0c;包括了web、api、APP&#xff0c;甚至PC应用程序都可以使用它来完成自动化测试。 swagger是一款RESTFUL接口的文档在线自动生成软件&#xff0c;swagger是一个规范和完整的框架&a…

智能座舱架构与芯片 - (2) 架构篇

一、定义 1.1 智能座舱定义 按照百度百科的定义&#xff0c;智能座舱&#xff08;intelligent cabin&#xff09;旨在集成多种IT和人工智能技术&#xff0c;打造全新的车内一体化数字平台&#xff0c;为驾驶员提供智能体验&#xff0c;促进行车安全。目前国内外已经有很多研究…

算法刷题-动态规划-1

算法刷题-动态规划-1 不同路径不同路径||方法一&#xff1a;方法二 第N个泰波那契数递归写法滚动数组 三步问题递归操作滚动数组 使用最小画法爬楼梯递归 解码方法方法一方法二&#xff1a;&#xff08;大佬讲解&#xff09; 不同路径 //机器人不同的路径进入到指定的地点 publ…

SpringBoot : ch06 整合 web (一)

前言 SpringBoot作为一款优秀的框架&#xff0c;不仅提供了快速开发的能力&#xff0c;同时也提供了丰富的文档和示例&#xff0c;让开发者更加容易上手。在本博客中&#xff0c;我们将介绍如何使用SpringBoot来整合Web应用程序的相关技术&#xff0c;并通过实例代码来演示如何…

“图纸保密大作战:上海迅软DSE解决方案守护机械公司核心资料

机械行业是我国重要的工业制造行业之一&#xff0c;相关企业在发展中往往需要用到ERP、PDM、PLM等系统来对产品信息进行管理&#xff0c;其中便涉及到大量文档和图纸等重要数据。然而随着业务的快速发展和数字化转型&#xff0c;机械行业也面临着如数据泄露、外来袭击攻击、内部…

华为obs上传下载-Java版 2023-11-23

弄了半天&#xff0c;老师帮弄成功了&#xff0c;经过同意&#xff0c;分享到网上&#xff0c;希望能帮助更多人&#xff0c;至于怎么弄的&#xff0c;我也不知道。 创建idea项目后&#xff0c;项目结构&#xff0c;对应文件没有的创一个 pom.xm 注意改Java版本&#xff0c;我…

AIGC前沿技术与数字创新应用合作交流和论坛发布活动圆满落幕

2023年11月17日下午&#xff0c;AIGC前沿技术与数字创新应用合作交流和论坛发布活动在北京市海淀区牡丹科技楼B座B1报告厅成功举办。 在这个以技术为驱动力的时代&#xff0c;AIGC等这些前沿技术正以惊人的速度改变着我们的生活和产业格局。利用新兴技术和数字化工具来解决问题…

vite vue3配置eslint和prettier以及sass

准备 教程 安装eslint 官网 vue-eslint ts-eslint 安装eslint yarn add eslint -D生成配置文件 npx eslint --init安装其他插件 yarn add -D eslint-plugin-import eslint-plugin-vue eslint-plugin-node eslint-plugin-prettier eslint-config-prettier eslint-plugin…

【性能测试】稳定性/并发压力测试的TPS计算+5W并发场景设计...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、稳定性测试TPS…