数字图像处理--基本图像操作

数字图像处理–基本图像操作

1 主要内容

(1)搭建能运行图像算法程序的平台;
(2)独立完成matlab矩阵基本操作,如矩阵信息的提取包括获取矩阵大小、矩阵维数、矩阵元素个数、向量长度和矩阵乘法等操作;
(3)独立完成基本图像操作,包括读取、存取、转换和显示灰度图像、彩色图像,并将图像进行保存;
(4)读取一副彩色图,将其变换为灰度图和二值图像,并在同一个窗口内分成三个子窗口来分别显示彩色图、灰度图和二值图,注上标题。

2 源程序

废话不说,上代码

import numpy as np

print('*********矩阵的基本操作*************')
#手动创建3*3的矩阵
A = np.mat([[1,2,3],[4,5,6],[7,8,9]])
print('矩阵A:',A)
#随机创建一个3*33*3*3的矩阵
B = np.mat(range(1,10)).reshape(3,3)
C = np.array(range(1,28)).reshape(3,3,3)
print('矩阵B:',B)
print('矩阵C:',C)

#获取矩阵AB的维度
print('矩阵A的维度:',np.ndim(A))
print('矩阵B的维度:',np.ndim(B))
print('矩阵C的维度:',np.ndim(C))
#获取矩阵的大小
print('矩阵A的大小:',A.shape)
print('矩阵B的大小:',B.shape)
print('矩阵C的大小:',C.shape)
#获取矩阵的元素个数
print('矩阵A的元素个数:',np.size(A))
print('矩阵B的元素个数:',np.size(B))
print('矩阵C的元素个数:',np.size(C))

#定义一个向量,并求出向量的长度
D = np.random.randn(10)
print('生成一个向量D:',D)
print('向量D的长度',len(D))

#矩阵的乘法,A*B做例子
print(np.dot(A,B))
#矩阵的加减法,A+EA-E做例子
E = np.ones((3,3))
print('生成一个全为1的矩阵E:',E)
print('矩阵的加法:',A+E)
print('矩阵的减法:',A-E)


import cv2
print('''''''图像的基本操作''''''')
#读取一张彩色图片
img = cv2.imread(r'C:\python_produce\shuzituxiang\1.png')
cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
#cv2.waitKey(0)


#对彩色图片进行缩放
h, w = img.shape[0:2]
img2 = cv2.resize(img, None, fx=0.5, fy=0.5)
cv2.imshow('img_resize', img2)
cv2.waitKey(0)
cv2.destroyAllWindows()
#将彩色图转为灰度图像
img3 = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
print('gray:',img3.shape)
cv2.imshow('img3', img3)
cv2.waitKey(0)
cv2.destroyAllWindows()


cv2.imwrite(r'C:\python_produce\shuzituxiang\2.png', img3)

#将灰度图像进行二值化处理-》二值图像
#使用cv2.threshold进行阈值处理,127是阈值
ret, img_binary = cv2.threshold(img3, 127, 255, cv2.THRESH_BINARY)
cv2.imshow('img_binary', img_binary)
cv2.waitKey(0)
cv2.destroyAllWindows()

import matplotlib.pyplot as plt
#读取一副彩色图,将其变换为灰度图和二值图像,并在同一个窗口内分成三个子窗口来分别显示彩色图、灰度图和二值图,注上标题。

#设置画布标题字体为中文,不设置的话,可能会出现乱码结果
plt.rcParams["font.sans-serif"]=["SimHei"]
plt.rcParams["axes.unicode_minus"]=False

#创建画布,添加标题
plt.gcf().canvas.manager.set_window_title('玫瑰')
plt.gcf().suptitle("玫瑰花")

img_yuantu = img[:,:, ::-1]
img_binary_x = cv2.cvtColor(img_binary,cv2.COLOR_BGR2RGB)

plt.subplot(131), plt.imshow(img_yuantu), plt.title("原图")
plt.subplot(132), plt.imshow(img3,cmap='gray'), plt.title("灰度图")
plt.subplot(133), plt.imshow(img_binary_x), plt.title("二值图")

plt.show()

3 实现结果

3.1 矩阵的基本操作运行结果,包括获取矩阵大小、矩阵维数、矩阵元素个数、向量长度和矩阵乘法等操作。如下图一和图二所示。

生成矩阵运行结果
在这里插入图片描述

对矩阵的基本操作运行结果
在这里插入图片描述

3.2 图像的基本操作(读取、存取、转换和显示灰度图像、彩色图像)运行结果,如下图所示。

图像读取
在这里插入图片描述

图像裁剪
在这里插入图片描述

生成灰度图像并存取
在这里插入图片描述

3.3 读取一副彩色图,将其变换为灰度图和二值图像,如下图所示。

原图、灰度图、二值图
在这里插入图片描述
学习记录,有错望各位大佬提醒下哈!

猜你喜欢

转载自blog.csdn.net/MZYYZT/article/details/128079698