Python矩阵运算——numpy用法(二)

使用numpy进行图片处理

一张平面图片是由无数个像素点按照坐标(x, y)(也可以理解为行、列)排列组合构成的,图片数据格式就是一个三维的数字列表,数据结构如下:

[[[247 218 213]		
  [255 233 229]
  [255 238 238]
  ...
  [127 186 236]
  [126 185 235]
  [120 179 229]]
 ...
 [[ 50 137 193]
  [ 59 154 198]
  [ 59 168 190]
  ...
  [ 25  26  30]
  [ 25  26  30]
  [ 25  26  30]]]

数据当中的一维数组中的数据([247 218 213])代表该像素点的颜色数据(三原色RGB),二维数组代表着行号(y),整个一维数组代表着列号(x),用表格进行表示:

247 218 213255 233 229126 185 235120 179 229
50 137 19359 154 19825 26 3025 26 30

三原色查看戳这里

图像处理

使用cv2这个库读取图片数据,并将处理好的图片数据进行显示

import numpy as np
import cv2		# 需下载python库

data = cv2.imread("duck.jpg", cv2.IMREAD_COLOR)		# 读取图片数据
img = np.array(data)		# 使用读取数据建立一个ndarray	
cv2.imshow("show", img)		# 生成一个窗口显示图片

在这里插入图片描述
因此只需要对img进行索引操作修改数据,就可以实现图像的处理:

图片x轴镜像:

img = img[::-1, :, :]		# 从二维数组最后一个开始取数据(从最后一行开始)
cv2.imshow("show2", img)

在这里插入图片描述
图片y轴镜像:

img = img[:, ::-1, :]		# 每行最后一列开始取数据
cv2.imshow("show8", img)

在这里插入图片描述
对图片进行压缩(纵向)

img = img[:: , :: 2, :]		# 每2次取一个列数据
cv2.imshow("show5", img)

在这里插入图片描述
也可以调整图片颜色

灰度图片

img_gray = img[:, :, 2]*0.299 + a[:, :, 1]*0.587 + a[:, :, 0]*0.114		# 调整三原色数据
img_gray = img_gray.astype(np.uint8)	# 数据取整
cv2.show("gray", img_gray)

在这里插入图片描述
设置曝光度

img_light = (img*2.0)     # 范围:[0,255] 超过255
# 裁剪 超过范围的
img_light = np.clip(img_light, a_min=None, a_max=255.).astype(np.uint8)
cv2.imshow("light", img_light)

在这里插入图片描述
numpy的整体用法和一些实际用途基本就介绍到这了。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值