图片的二维数组转一维数组 降维

我这里用的是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])  # 行长度,由于是一维数组了,所有不能求列长度了

猜你喜欢

转载自blog.csdn.net/zhangyu4863/article/details/81188911