我这里用的是python3,网上的其他的版本全是自己写的通过两个for循环,但是这样效率低,可移植性低,复用率低。
- 首先python中有
numpy
来专门用于处理多维数组对象和用于处理数组的例程集合组成的库
- 图片本质就相当于一个二维数组或者二维矩阵(这里的图片指的是灰度图)
- 先在代码中引入库
import cv2 as cv
import numpy as np
- 读取图片
# 读取
path = './wine_bottle/grayscale_median.png' # path就是定义的路径,这里是相对路径
img = cv.imread(path, 0) # 这里的`0`就是把图片读取为灰度图
- 查看打印灰度图的二维数组,以及二维数组的行长和列长
print(img)
print(img.shape[0]) # 行长度
print(img.shape[1]) # 列长度
- 降维(默认的是行序优先)
# 图片降维
img_1 = img.flatten()
print(img_1)
print(img_1.shape[0]) # 行长度,由于是一维数组了,所有不能求列长度了
这里的行长度正好就是上边的行长度乘以列长度,降维成功
- 结果图片
- 完整代码
import cv2 as cv
import numpy as np
# 读取
path = './wine_bottle/grayscale_median.png'
img = cv.imread(path, 0)
# 展示
# cv.imshow('grayscale_median', img)
# cv.waitKey(0)
# 查看图片
print(img)
print(img.shape[0]) # 行长度
print(img.shape[1]) # 列长度
# 图片降维
img_1 = img.flatten()
print(img_1)
print(img_1.shape[0]) # 行长度,由于是一维数组了,所有不能求列长度了