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

图像中部分RGB矩阵可视化

图像中部分RGB可视化

今天室友有个需求就是模仿下面这张图画个示意图:

在这里插入图片描述

大致就是把图像中的一小部分区域的RGB值可视化了一下。他居然不知道该怎么画,我寻思这不直接秒了。

import cv2 as cv
import numpy as np
import matplotlib.pyplot as pltclass Plotter:def __init__(self, img):self.img = imgself.range = None# 三个图的位置self.loc = [[0.01, 0.325, 0.35, 0.35],[0.375, 0.375, 0.25, 0.25],[0.71, 0.355, 0.29, 0.29],]self.dloc = [0.02, 0.02]  # 表格间距self.facecolor = plt.get_cmap("Accent")(range(3))  # 表格颜色def plot_img(self, fig):img_range = self.rangeaxes = fig.add_axes(self.loc[0])axes.imshow(self.img, aspect="auto")axes.add_patch(plt.Rectangle((img_range[0], img_range[2]),img_range[1] - img_range[0],img_range[3] - img_range[2],fill=False,edgecolor="red",linewidth=2,))axes.axis("off")def plot_table(self, fig, table):loc = self.loc[2]dloc = self.dlocfacecolor = self.facecolorfor i in range(table.shape[2]):axes = fig.add_axes([loc[0] - dloc[0] * i, loc[1] - dloc[1] * i, loc[2], loc[3]],)axes.table(cellText=table[:, :, i],loc="center",cellColours=np.full((table.shape[0], table.shape[1], 4),facecolor[i],dtype=self.facecolor[0].dtype,),bbox=[0, 0, 1, 1],)axes.axis("off")def plot_range_img(self, fig, range_img):axes = fig.add_axes(self.loc[1])axes.imshow(range_img, aspect="auto")axes.set_xticks([])axes.set_yticks([])spines = ["left", "right", "bottom", "top"]for spine in spines:axes.spines[spine].set_color("r")def plot_path(self, axes, x1, x2):x = np.linspace(x1[0], x2[0], 100)y = np.linspace(x1[1], x2[1], 100)axes.set_xlim(0, 1)axes.set_ylim(0, 1)axes.plot(x, y, "r--")def range_points_on_img(self):img_range = self.rangeloc = self.loc[0]luloc = loc[0] + img_range[0] / self.img.shape[0] * loc[2]# axes坐标系y轴方向相反ldloc = loc[1] + (self.img.shape[1] - img_range[2]) / self.img.shape[1] * loc[3]dx = (img_range[1] - img_range[0]) / self.img.shape[0] * loc[2]dy = (img_range[3] - img_range[2]) / self.img.shape[1] * loc[3]return [(luloc + dx, ldloc - dy), (luloc + dx, ldloc)]def plot_img2range(self, axes):img_points = self.range_points_on_img()range_points = [(self.loc[1][0], self.loc[1][1]),(self.loc[1][0], self.loc[1][1] + self.loc[1][3]),]print(img_points)self.plot_path(axes, img_points[0], range_points[0])self.plot_path(axes, img_points[1], range_points[1])def plot_range2table(self, axes):range_points = [(self.loc[1][0] + self.loc[1][2], self.loc[1][1]),(self.loc[1][0] + self.loc[1][2], self.loc[1][1] + self.loc[1][3]),]table_points = [(self.loc[2][0] - self.dloc[0] * 2, self.loc[2][1] - self.dloc[1] * 2),(self.loc[2][0] - self.dloc[0] * 2,self.loc[2][1] + self.loc[2][3] - self.dloc[1] * 2,),]self.plot_path(axes, range_points[0], table_points[0])self.plot_path(axes, range_points[1], table_points[1])def plot_line(self, fig):axes = fig.add_axes([0, 0, 1, 1])self.plot_img2range(axes)self.plot_range2table(axes)axes.axis("off")def plot(self, img_range):self.range = img_rangerange_img = self.img[img_range[0] : img_range[1], img_range[2] : img_range[3], :]fig = plt.figure()self.plot_img(fig)self.plot_range_img(fig, range_img)self.plot_table(fig, range_img)self.plot_line(fig)plt.show()if __name__ == "__main__":img_path = "lena_color_512.tif"img = cv.imread(img_path, cv.IMREAD_UNCHANGED)img = cv.cvtColor(img, cv.COLOR_BGR2RGB)p = Plotter(img)p.plot([255, 265, 255, 265])

其实就是先画三个主图,一个全部的,一个小范围内的,一个RGB值的表,然后画四根线就完事了。效果如下:

在这里插入图片描述

唯一要注意的是 Axes 坐标系和图像的坐标系中Y轴是相反的,然后其他 axes.imshowaxes.table 都让它填满整个 Axes 就好了,要不然它给你自适应了,不好算几根连线的位置。

这里写的时候没想好,按 copilot 生成的 img_range 形式写下去了,目前是 [x起点,x终点,y起点,y终点] 的格式,换成 [x起点,y起点,x范围,y范围] 会更统一一点。但也懒得改了,一小时的工作时间白嫖室友一顿必胜客,很舒服。

相关文章:

图像中部分RGB矩阵可视化

图像中部分RGB可视化 今天室友有个需求就是模仿下面这张图画个示意图: 大致就是把图像中的一小部分区域的RGB值可视化了一下。他居然不知道该怎么画,我寻思这不直接秒了。 import cv2 as cv import numpy as np import matplotlib.pyplot as pltclass …...

RPA财务机器人在厦门市海沧医院财务管理流程优化汇总的应用

目前国内外研究人员对于RPA机器人在财务管理流程优化领域中的应用研究层出不穷,但现有研究成果主要集中在财务业务单一领域,缺乏财务管理整体流程一体化管控的研究。RPA机器人的功能绝非单一的财务业务处理,无论从自身技术发展,或…...

聚焦老年生活与健康,“老有所依·情暖夕阳”元岗街社区微型养老博览会顺利开展

尊老敬老是中华民族的传统美德, 爱老助老是全社会的共同责任。 家有一老,如有一宝, 长者的生活情况是一个家庭的头等大事, 做好长者服务是街道和社区的重要工作。 2024年1月6日,由元岗街道党工委、元岗街道办事处、…...

记录汇川:H5U与Factory IO测试12

主程序: 子程序: IO映射 子程序: 辅助出料 子程序: 自动程序 Factory IO配置: 实际动作如下: Factory IO测试12...

PingCAP 受邀参加 FICC 2023,获 Open100 世纪全球开源贡献奖

2023 年 12 月,2023 国际测试委员会智能计算与芯片联邦大会(FICC 2023)在海南三亚举办,中外院士和数十位领域专家莅临出席。 大会现场 ,开放源代码促进会创始人 Bruce Perens 颁发了 Open100 世纪全球开源贡献奖&…...

10-skywalking告警

https://github.com/apache/skywalking/blob/master/docs/en/setup/backend/backend-alarm.md 5.1:告警指标 ~$ vim /apps/apache-skywalking-apm-bin/config/oal/core.oal service_resp_time # 服务的响应时间 service_sla # 服务http请求成功率SLV,比…...

vue前端开发自学,插槽练习第二次,name属性的使用

vue前端开发自学,插槽练习第二次,name属性的使用!可以使用name属性,来自定义一个名字,这样,就可以在一个组件内同时出现多个插槽的内容了。在子组件内接收的时候,很简答,只需要在slot标签里面加上name“mz”&#xff1…...

AI副业拆解:人像卡通化,赋予你的形象全新生命力

大家好我是在看,记录普通人学习探索AI之路。 🔥让你的形象瞬间穿越二次元!🚀人像卡通化,捕捉你的独特魅力,让真实与梦幻在此刻交融。🎨 今天为大家介绍如何免费把人像卡通化--漫画风 https://w…...

宝塔面板安装MySQL8数据库

第一步:搜索mysql 第二步: 点击安装 我这里选择安装8版本 第三步:给宝塔配置mysql防火墙 第四步:修改数据库密码 第五步:想要使用navicat连接 需要修改root的权限 (1)使用secureCRT先登录mysql (2) 输入u…...

中科星图——Landsat9_C2_SR大气校正后的地表反射率数据

数据名称: Landsat9_C2_SR 数据来源: USGS 时空范围: 2022年1月-2023年3月 空间范围: 全国 数据简介: Landsat9_C2_SR数据集是经大气校正后的地表反射率数据,属于Collection2的二级数据产品&#…...

使用ros_arduino_bridge控制机器人底盘

使用ros_arduino_bridge控制机器人底盘 搭建了ROS分布式环境后,将ros_arduino_bridge功能包上传至Jetson nano,就可以在PC端通过键盘控制小车的运动了。实现流程如下: 系统准备;下载程序;程序修改;分别启动PC与Jetson…...

Nacos下载与安装【windows】

🥚今日鸡汤🥚 我不知将去何方,但我已经在路上。 ——宫崎骏《千与千寻》 目录 🥞1.Nacosdi地址 🌭2.GitHub下载 🍿3.目录结构 🥓4.启动nacos 🧂5.客户端登陆 &#x1f9c8…...

【随笔】遗传算法优化的BP神经网络(随笔,不是很详细)

文章目录 一、算法思想1.1 BP神经网络1.2 遗传算法1.3 遗传算法优化的BP神经网络 二、代码解读2.1 数据预处理2.2 GABP2.3 部分函数说明 一、算法思想 1.1 BP神经网络 BP神经网络(Backpropagation Neural Network,反向传播神经网络)是一种监…...

Mysql 嵌套子查询

文章目录 子查询 大家好!我是夏小花,今天是2024年1月13日|腊月初三 子查询 需求是:最外层的查询语句里面包含四个不相同表的查询,根据月份进行关联查询,每个查询语句中的where条件可以自行去定义,最后返回数量和月份 …...

Qt QLabel标签控件

文章目录 1 属性和方法1.1 文本1.2 对齐方式1.3 换行1.4 图像 2. 实例2.1 布局2.2 为标签添加背景色2.3 为标签添加图片2.4 代码实现 QLabeI是Qt中的标签类,通常用于显示提示性的文本,也可以显示图像 1 属性和方法 QLabel有很多属性,完整的可…...

iOS14 Widget 小组件调研

桌面小组件是iOS14推出的一种新的桌面内容展现形式。 根据苹果的统计数据,“一般用户每天进入主屏幕的次数超过90次”,如果有一个我们应用的小组件在桌面,每天都有超过90次曝光在用户眼前的机会,这绝对是一个顶级的流量入口。 “…...

HarmonyOS的应用类型(FA vs Stage)

HarmonyOS目前提供两种应用模型 FA(Feature Ability)模型: HarmonyOS API 7开始支持的模型,已经不再主推。 Stage模型: HarmonyOS API 9开始新增的模型,是目前主推且会长期演进的模型。在该模型中,由于提供了AbilityStage、WindowStage等类作为应用组件和Window窗口的…...

Jeecg创建表单页面步骤

1.在Online表单开发里面新建一个表单页面,可以修改数据库属性、页面属性、校验字段、外键、索引,新建完成之后然后同步数据库 2.选中该表,然后生成代码,可以先把代码放在桌面,然后将文件夹是包名称的文件复制到后端代…...

leetcode17 电话号码的字母组合

方法1 if-else方法 if-else方法的思路及其简单粗暴,如下图所示,以数字234为例,数字2所对应的字母是abc,数字3所对应的是def,数字4所对应的是ghi,最后所产生的结果就类似于我们中学所学过的树状图一样&…...

用html和css实现一个加载页面【究极简单】

要创建一个简单的加载页面&#xff0c;你可以使用 HTML 和 CSS 来设计。以下是一个基本的加载页面示例&#xff1a; HTML 文件 (index.html): <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段&#xff1a; 构建阶段&#xff08;Build Stage&#xff09;&#xff1a…...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站&#xff1a;https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本&#xff1a; Windows版&#xff08;推荐下载标准版&#xff09; Windows系统安装步骤 运行安装程序&#xff1a; 双击下载的.exe安装文件 如果出现安全提示&…...

实现弹窗随键盘上移居中

实现弹窗随键盘上移的核心思路 在Android中&#xff0c;可以通过监听键盘的显示和隐藏事件&#xff0c;动态调整弹窗的位置。关键点在于获取键盘高度&#xff0c;并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

rnn判断string中第一次出现a的下标

# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...

LeetCode - 199. 二叉树的右视图

题目 199. 二叉树的右视图 - 力扣&#xff08;LeetCode&#xff09; 思路 右视图是指从树的右侧看&#xff0c;对于每一层&#xff0c;只能看到该层最右边的节点。实现思路是&#xff1a; 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...

解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist

现象&#xff1a; android studio报错&#xff1a; [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决&#xff1a; 不要动CMakeLists.…...