一篇文章搞懂图像的本质是什么

news2024/11/25 12:31:17

图像是什么?
每个图⽚可以看成数组
在这里插入图片描述

在这里插入图片描述彩⾊图⽚呢?
#pic_center =500x500
在这里插入图片描述计算机眼⾥的颜⾊图⽚
在这里插入图片描述
Numpy读取彩⾊照⽚

在这里插入图片描述
• Shape 三维数组
• ⾼度
• 宽度
• 颜⾊通道
Numpy读取彩⾊照⽚
• 照⽚⼤⼩ 540 x 480
• 540个像素宽度
• 480个像素⾼度
• 3个颜⾊通道
• Numpy shape (480, 540, 3)
• ⾏:480个像素⾼度
• 列:540个像素宽度
• 3个颜⾊通道

在这里插入图片描述计算机并不知道哪⼀个通道
是红⾊,它只知道有三个
表达颜⾊数值的通道

所以我们需要标注通道对应的颜⾊
每⼀个通道本质是等同于⼀张
灰度图

#首先导入numpy
import numpy as np
# 为了在notebook中显示图片,导入matplotlib库
import matplotlib.pyplot as plt

# 加这行在Notebook显示图像
%matplotlib inline
#再使用一个PIL库,用于读取图像
from PIL import Image
#演示
img = Image.open("./img/cat.jpg")
#显示图像
img

在这里插入图片描述

#打印一下变量的类型
type(img)
# 可以看到这个不是numpy的数组格式,那numpy还不能处理它
img_arr = np.asarray(img)
type(img_arr)
# 发现已经变成了numpy数组,现在我们就可以用numpy来处理它了
img_arr.shape
# 可以看到这张照片是1880像素宽,1253像素高,3个颜色通道
# 再使用matplot的imshow()方法显示Numpy数组形式的图片
plt.imshow(img_arr)

在这里插入图片描述

# 可以看到横坐标和纵坐标显示了图片的长度是1800多,高度是1200多
# 我们继续对这个图片操作,先使用numpy的copy方法复制一份原图
img_arr_copy = img_arr.copy()
plt.imshow(img_arr_copy)

在这里插入图片描述

#检查一下大小
img_arr_copy.shape
# 首先使用numpy切片,将R,G,B三个颜色通道中的R红色通道显示出来
plt.imshow(img_arr_copy[:,:,0])

在这里插入图片描述

# 大家会发现这个颜色很奇怪,都是翠绿色,为什么会显示成这样呢?

# 我们打开matplot的官网关于颜色表colormap的说明:
# https://matplotlib.org/stable/gallery/color/colormap_reference.html
# 可以看到默认的颜色:是翠绿色(viridis )。那这个颜色方便色盲观看的
# 我们也可以将cmap颜色设置成火山岩浆样式:magma
plt.imshow(img_arr_copy[:,:,1],cmap="magma")

在这里插入图片描述

# 我们打印一下红色R通道的数组
img_arr_copy[:,:,0]
# 好,我们知道,计算机是分不清到底哪一个通道是红色的,每一个颜色通道其实都是一个灰度图,我们首先将cmap颜色设置为gray灰度
# 看一下
plt.imshow(img_arr_copy[:,:,0],cmap="gray")

在这里插入图片描述

# 类似的,我们将绿色通道也显示为灰度模式
plt.imshow(img_arr_copy[:,:,1],cmap='gray')

在这里插入图片描述

# 那 0呢代表没有绿色或纯黑色,255呢就代表纯绿色
# 可以看到,灰度图上颜色越浅,表示这里越绿
# 再看一下蓝色通道

plt.imshow(img_arr_copy[:,:,2],cmap='gray')

在这里插入图片描述

# 0:没有蓝色或纯黑色,255代表纯蓝色
# 灰度图颜色越浅,表示这里越蓝 ,可以看到这里相比前面红色、绿色的灰度图,这个花瓶是颜色比较浅的,代表颜色接近蓝色
# 当然,我们可以将某个颜色通道颜色全部设为0,我们看一下效果,
# 我这里把绿色通道全部变为0
img_arr_copy[:,:,1] = 0
# 显示一下
plt.imshow(img_arr_copy)

在这里插入图片描述

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

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

相关文章

[NDK]从Opengles到Vulkan-基础篇(2)-运行配置

上一篇我们介绍了Opengl和Vulkan运行环境的不同。 引入Opengles,我们需要做的是,在Cmakes中配置动态库引入。 使用opengles2就用GLESv2,用es3就用GLESv3,而EGL需要使用配置EGL环境 这里两个比较基础的东西是EGL和GLES的库引入。 es2只要Android 4.0就开始支持,es3是4.4开…

【2023最新版】APP测试面试题(超详细~)

一、web测试和app测试的相同点和区别? 相同点:都离不开测试的基础知识和测试原理。具体包括以下几个方面。 测试用例,均使用边界值分析法,等价类划分法等。多数采用黑盒测试,来验证业务功能是否能得到正确的应用。 需…

外贸出货中惹了个大麻烦

谈C端的客户与B端的客户相比, 我觉得最大的好处就是不用我们自己去报关,一般C端的客户都会有自己的货代负责双清业务,即使我们自己去发货, 也是会找双清的货代,因此我们自己本身就不要报关报检, 只需要将货…

【云原生】K8S存储卷:PV、PVC详解

目录 一、emptyDir存储卷二、hostPath存储卷三、nfs共享存储卷四、PVC 和 PV4.1 NFS使用PV和PVC4.2创建动态PV 一、emptyDir存储卷 容器磁盘上的文件的生命周期是短暂的,这就使得在容器中运行重要应用时会出现一些问题。首先,当容器崩溃时,ku…

Web菜鸟教程 - Radis实现高性能数据库

Redis是用C语言开发的一个高性能键值对数据库,可用于数据缓存,主要用于处理大量数据的高访问负载。 也就是说,如果你对性能要求不高,不用Radis也是可以的。不过作为最自己写的程序有高要求的程序员,自然是要学一下的&a…

adb对安卓app进行抓包(ip连接设备)

adb对安卓app进行抓包(ip连接设备) 一,首先将安卓设备的开发者模式打开,提示允许adb调试 二,自己的笔记本要和安卓设备在同一个网段下(同连一个WiFi就可以了) 三,在笔记本上根据i…

RunnerGo的相比较JMeter优势,能不能替代?

目前在性能测试领域市场jmeter占有率是非常高的,主要原因是相对比其他性能测试工具使用更简单(开源、易扩展),功能更强大(满足多种协议的接口),但是随着研发协同的升级,平台化的性能…

手机出现 不读卡 / 无信号时应该怎么办?

当手机屏幕亮起,一般在屏幕最上方都会有代表手机卡状态的显示,其中网络信号和读卡状态的标识,依旧有很多人分不太清,更不清楚改怎么办了。 1、当我们的手机里有两张卡时,则会有两个信号显示 2、信号状态一般是由短到…

淘宝商品数据接口 淘宝商品价格接口 淘宝商品sku抓取

基础介绍 1)淘宝商品id,它均由数字构成,且如同身份证号码一样具有唯一性,属于商品链接中的一部分。在淘宝页面可以以下方式查看。 直接打开商品的详情页面,看到浏览器地址栏中的宝贝链接,链接中找到“id”&…

Android Jetpack Compose 中的分页与缓存展示

Android Jetpack Compose 中的分页与缓存展示 在几乎任何类型的移动项目中,移动开发人员在某个时候都会处理分页数据。如果数据列表太大,无法一次从服务器检索完毕,这就是必需的。因此,我们的后端同事为我们提供了一个端点&#…

分类预测 | MATLAB实现GAPSO-BP遗传算法组合粒子群算法优化BP神经网络多输入分类预测

分类预测 | MATLAB实现GAPSO-BP遗传算法组合粒子群算法优化BP神经网络多输入分类预测 目录 分类预测 | MATLAB实现GAPSO-BP遗传算法组合粒子群算法优化BP神经网络多输入分类预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.分类预测 | MATLAB实现GAPSO-BP遗…

每日一题——对称的二叉树

题目 给定一棵二叉树,判断其是否是自身的镜像(即:是否对称) 例如: 下面这棵二叉树是对称的 下面这棵二叉树不对称。 数据范围:节点数满足 0≤n≤1000,节点上的值满足 ∣val∣≤1000 要求&…

并发服务器模型,多线程并发

一、多线程并发完整代码 #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <arpa/inet.h> #include <string.h> #include <unistd.h> #include <sys/wait.h> #include <stdlib.h> #include <…

[高光谱]PyTorch使用CNN对高光谱图像进行分类

项目原地址&#xff1a; Hyperspectral-Classificationhttps://github.com/eecn/Hyperspectral-ClassificationDataLoader讲解&#xff1a; [高光谱]使用PyTorch的dataloader加载高光谱数据https://blog.csdn.net/weixin_37878740/article/details/130929358 一、模型加载 在…

怎样才能免费使用Qt开发闭源商业软件?

Qt 是一个跨平台的应用程序开发框架&#xff0c;其使用遵循 GNU Lesser General Public License&#xff08;LGPL&#xff09;开源许可协议。根据 LGPL 许可协议&#xff0c;您可以将 Qt 用于闭源商业软件&#xff0c;但是您需要满足以下条件&#xff1a; 1. 在您的软件中使用…

Python实现SSA智能麻雀搜索算法优化卷积神经网络分类模型(CNN分类算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 麻雀搜索算法(Sparrow Search Algorithm, SSA)是一种新型的群智能优化算法&#xff0c;在2020年提出&a…

Synopsys EDA数字设计与仿真

参考如下文章安装Synopsys EDA开发工具 https://blog.csdn.net/tugouxp/article/details/132255002?csdn_share_tail%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22132255002%22%2C%22source%22%3A%22tugouxp%22%7D Synopsys EDA工具的结构 下…

【Android Framework系列】第10章 PMS之Hook实现广播的调用

1 前言 前面章节我们学习了【Android Framework系列】第4章 PMS原理我们了解了PMS原理&#xff0c;【Android Framework系列】第9章 AMS之Hook实现登录页跳转我们知道AMS可以Hook拦截下来实现未注册Activity页面的跳转&#xff0c;本章节我们来尝试一下HookPMS实现广播的发送。…

React入门 jsx学习笔记

一、JSX介绍 概念&#xff1a;JSX是 JavaScript XML&#xff08;HTML&#xff09;的缩写&#xff0c;表示在 JS 代码中书写 HTML 结构 作用&#xff1a;在React中创建HTML结构&#xff08;页面UI结构&#xff09; 优势&#xff1a; 采用类似于HTML的语法&#xff0c;降低学…

chatserver服务器开发笔记

chatserver服务器开发笔记 1 chatserver2 开发环境3 编译 1 chatserver 集群聊天服务器和客户端代码&#xff0c;基于muduo、redis、mysql实现。 学习于https://fixbug.ke.qq.com/ 本人已经挂github&#xff1a;https://github.com/ZixinChen-S/chatserver/tree/main 需要该项…