python图像处理实战(一)—图像基础

news/2024/7/21 4:51:55 标签: 图像处理, 计算机视觉, 人工智能, python, numpy

🚀写在前面🚀

🖊个人主页:https://blog.csdn.net/m0_52051577?type=blog 

🎁欢迎各位大佬支持点赞收藏,三连必回!!

🔈本人新开系列专栏—python图像处理

❀愿每一个骤雨初晴之时,所有的蜻蜓振翅和雨后惊雷,都归你。

目录

一、前言

二、认识图像 

三、用到的库

 (1)Numpy

 (2)OpenCV

 (3)Matplotlib

四、代码实操 

numpy%EF%BC%89-toc" style="margin-left:40px;">(1)矩阵创建(numpy

1、创建方式一:常规array法创建

2、创建方式二:zero初始化法

3、创建方式三:ones创建法 

4、创建方式四:单位矩阵创建 

(2)三个重要属性

(3)基本操作

(4)矩阵运算

(5)获取元素 

(6)绘图函数 

(7)读取显示图像 


注:相关图片资源可在积分资源中获取,相关链接:https://download.csdn.net/download/m0_52051577/87844285?spm=1001.2014.3001.5503

一、前言

图像处理计算机视觉的一个重要研究领域,主要研究如何让计算机代替人眼实现对目标的分类、识别、跟踪和场景理解等内容。

二、认识图像 

 

 说明:分辨率:像素点的数量(1080P:1920✖1080)

PPI(像素密度):每英寸所拥有的像素数量

PPI=\frac{\sqrt{X^{2}+Y^{2}}}{square}其中square表示屏幕尺寸

相同尺寸下,像素点越多,图片的分辨率越高,图片的像素密度越高,看起来也就越清晰。

 三、用到的库

 (1)Numpy

图像处理中主要用于

※导入库

※元素、向量处理

※矩阵属性

※加减乘除、立方、开根

※最大值、最小值、平均值

※矩阵乘法

※元素获取

 (2)OpenCV

图像处理中主要用于

※导入库

※读取图片

※显示图片

※保存图片

 (3)Matplotlib

 图像处理中主要用于

※导入库

※绘制折线图

※绘制柱状图

※绘制xy坐标

※绘制标题

※显示图片

        通过前面对库的相关介绍,了解到这些库在用于图像处理中的各自分工,那么这些库是如何在图像处理中发挥作用的,下面上代码。

这里提供几个库的安装命令:

pip install numpy matplotlib -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
pip install pandas scipy scikit-learn scikit-image -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
pip install opencv-python -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
pip install jupyter -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
pip install jupyterlab -i http://pypi.douban.com/simple --trusted-host pypi.douban.com 

四、代码实操 

numpy%EF%BC%89">(1)矩阵创建(numpy

python">#导入库
import numpy as np

 1、创建方式一:常规array法创建

python">A = np.array([
    [1,2,3],
    [4,5,6],
    [7,8,9]
])

 

2、创建方式二:zero初始化法

python">B = np.zeros((3,4))

 

3、创建方式三:ones创建法 

python">C = np.ones((3,4), dtype=np.int64)
E = np.ones((2,4,3))

 

  注:其中zero函数与ones函数创建格式相同,其中(3,4)表示创建3行4列的二维数组,或三个四维行向量。 (2,4,3)表示创建一个2页4行3列的三维数组。

        np.ones函数的应用非常广泛,它可以被广泛用于科学计算、图像处理、机器学习、深度学习等领域。

4、创建方式四:单位矩阵创建 

python">D = np.identity(4)

 

创建4阶的单位矩阵。 

(2)三个重要属性

python">print('A.dtype =', A.dtype)  #类型
print('A.ndim =', A.shape)   #表示各位维度大小的元组。返回的是一个元组。
print('A.ndim =', A.ndim)    #ndim返回的是数组的维度,返回的只有一个数,该数即表示数组的维度。

A1 = A.reshape((1,9))
print(A1) # 有几个方括号,就有几个维度

A1 = A1.astype(np.float32)#转换数组的数据类型。

(3)基本操作

python"># 加减乘除
B = A + 2 
C = A / 2  

print(A)
print(B)
print(C)

 

python"># 平方、开根、对数
B = np.power(A, 0.5)
C = np.sqrt(A)
D = np.log(A)

print(B)
print(C)
print(D)

 

python"># 最大值、最小值、平均值
ma1 = A.max() 
ma2 = np.max(A)

mi1 = A.min(axis=0)
mi2 = np.min(A, axis=0)

me1 = A.mean(axis=1)
me2 = np.mean(A, axis=1)

python"># 转置
print(A)
print(A.T)
print(A.transpose())
print(np.transpose)

(4)矩阵运算

python">x = np.array([1, 1, 2])

z1 = A * x
z2 = A @ x
z3 = A.dot(x)

print(z1)
print(z2)
print(z3)

B = np.ones((3,3), dtype=np.int)

Z1 = A * B # 逐元素相乘
Z2 = A @ B # 矩阵乘法
Z3 = A.dot(B) #获取两个元素a,b的乘积

print(Z1)
print(Z2)
print(Z3)

 

(5)获取元素 

python">u = np.arange(2, 10, 2)
print(u)

  arange()函数:(2,10,2)获取[2,10)之间以2为步长的元素。

 

python">E = np.random.randint(0, 10, (5,5), dtype=np.int)
# 获取子矩阵
E1 = E[0:3, 0:3].copy()
print(E1)

 

python">E1.flatten()#返回一个一维数组。

 

(6)绘图函数 

python">A1 = np.random.randint(0, 10, (10,10))
print(A1)
bins = np.arange(-0.5, 10, 1)
plt.hist(A1.flatten(), bins=bins, rwidth=0.8, color='green')
plt.xticks(range(0,10))
plt.show()

 创建数组A1:

创建了10×10的二维数组,其中每行的元素为[0,10)的数字。 

根据创建的数组绘制图像:

 其中,bins是一个范围,采用-0.5到10的范围,间隔为1。

(7)读取显示图像 

python">img1 = cv.imread('D:\\proclass\\class\\pic\\apple.jpg')
img1 = cv.cvtColor(img1, cv.COLOR_BGR2RGB)
plt.imshow(img1)
plt.show()

 

python">#读取灰度图
img2 = cv.imread('D:\\proclass\\class\\pic\\apple.jpg', 0)
plt.imshow(img2, cmap='gray')
plt.show()

 

输出两张图片的维度发现,图1为3维,即彩色颜色通道,图2为2维,即黑白颜色通道。 


http://www.niftyadmin.cn/n/377721.html

相关文章

chatgpt赋能python:Python中浮点数的定义

Python中浮点数的定义 什么是浮点数? 在计算机科学中,浮点数(floating-point number)是一种用于表示实数的近似值的数值类型。Python中的浮点数是由整数部分和小数部分组成的,可以使用小数点来表示。例如&#xff0c…

华为OD机试真题B卷 Java 实现【字符串分隔】,附详细解题思路

一、题目描述 输入一个字符串,请按长度为8拆分每个输入字符串并进行输出,长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。 二、输入描述 连续输入字符串(每个字符串长度小于等于100)。 三、输出描述 依次输出所有分割后的长度…

Redis事务详解

目录 一、前言二、Redis事务 - 基本使用三、Redis事务 - 错误处理四、Redis事务 - 事务冲突1、事务所产生的问题2、悲观锁&乐观锁3、watch监听4、watch的应用场景 五、Redis 事务特性 一、前言 事务是指一个完整的动作,要么全部执行,要么什么也没有…

IMX6ULL裸机篇之I2C相关寄存器

一. I2C实验 I2C时钟选择与传输速率 1. IMX6ULL的 I2C频率标准模式 100kbit/S,快速模式为 400Kbit/S 2. 时钟源选择 perclk_clk_rootipg_clk_root66MHz(由之前的时钟实验章节可以知道是 66MHz)。 二. I2C 寄存器配置 I2Cx_IFDR寄存器&…

C++ deque类成员函数介绍

目录 🤔deque模板介绍: 🤔deque特点: 🤔deque内存结构图解: 🤔deque各操作地址指向: 🤔 deque的成员函数: deque构造函数: 🔍代…

2023年9月数学建模:网络流问题:最大流与最小费用最大流

2023年9月数学建模国赛期间提供ABCDE题思路加Matlab代码,专栏链接(赛前一个月恢复源码199,欢迎大家订阅):http://t.csdn.cn/Um9Zd 目录 介绍 最大流问题 概念与原理 Ford-Fulkerson算法与Edmonds-Karp算法 最小费用最大流问题 概念与原理 网络单纯形法与最短增广路径法 …

智能管理PoE交换机

在这个万物互联的时代,数据与数据之间的相互传输交流,显得尤为重要。那么要怎样才能使计算机与传统的物联设备相连接呢?这时,串口服务器这一媒介的作用就凸显出来了。那么,你知道什么是串口服务器吗?串口服…

大数据NoSQL数据库HBase集群部署——详细讲解~

大数据NoSQL数据库HBase集群部署 简介 HBase 是一种分布式、可扩展、支持海量数据存储的 NoSQL 数据库。 和Redis一样,HBase是一款KeyValue型存储的数据库。 不过和Redis设计方向不同 Redis设计为少量数据,超快检索HBase设计为海量数据,…