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

🚀写在前面🚀

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

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

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

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

目录


注:相关图片资源可在积分资源中获取,相关链接: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 

四、代码实操 

(1)矩阵创建(numpy)

#导入库
import numpy as np

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

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

 

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

B = np.zeros((3,4))

 

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

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、创建方式四:单位矩阵创建 

D = np.identity(4)

 

创建4阶的单位矩阵。 

(2)三个重要属性

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)基本操作

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

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

 

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

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

 

# 最大值、最小值、平均值
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)
# 转置
print(A)
print(A.T)
print(A.transpose())
print(np.transpose)

(4)矩阵运算

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)获取元素 

u = np.arange(2, 10, 2)
print(u)

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

 

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

 

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

 

(6)绘图函数 

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)读取显示图像 

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

 

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

 

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

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
xiaoxingxing的头像xiaoxingxing管理团队
上一篇 2023年6月7日
下一篇 2023年6月7日

相关推荐