python编程 numpy图片处理、矩阵操作

目录

一:垂直方向翻转(行逆序)

二:水平方向翻转(列逆序)

三:垂直、水平方向翻转(行、列逆序)

四:调整亮度,变明亮*2.0

五:调整亮度,变暗

六:垂直方向裁剪

七:水平方向裁剪

八:两个方向同时裁剪,保留左上角

九:高度方向 每隔一行取像素点

十:宽度方向 每隔一列取像素点

十一:缩略图 高、宽度方向压缩 清晰度较差

十二:灰度处理


一:垂直方向翻转(行逆序)

import numpy as np
import cv2

img_mat = cv2.imread("dog.jpg")
# 沿着X轴对称 行序列
img1 = img_mat[::-1, :, :]  # 行索引区间,列索引区间,通道区间
cv2.imshow("dog", img_mat)
cv2.imshow("X", img1)
cv2.waitKey(0)
cv2.destroyAllwindows()

二:水平方向翻转(列逆序)

import numpy as np
import cv2

img_mat = cv2.imread("dog.jpg")
# 沿着y轴对称 列序列
img2 = img_mat[:, ::-1, :]  # 行索引区间,列索引区间,通道区间
cv2.imshow("dog", img_mat)
cv2.imshow("Y", img2)
cv2.waitKey(0)
cv2.destroyAllwindows()

三:垂直、水平方向翻转(行、列逆序)

import numpy as np
import cv2

img_mat = cv2.imread("dog.jpg")
# 沿着原点对称 行、列序列
img3 = img_mat[::-1, ::-1]  # 行索引区间,列索引区间,通道区间
cv2.imshow("dog", img_mat)
cv2.imshow("0.0", img3)
cv2.waitKey(0)
cv2.destroyAllwindows()

四:调整亮度,变明亮*2.0

import numpy as np
import cv2

img_mat = cv2.imread("dog.jpg")
# 明亮
img4 = np.clip(img_mat * 1.5, a_min=0., a_max=255.).astype(np.uint8)
cv2.imshow("dog", img_mat)
cv2.imshow("light", img4)
cv2.waitKey(0)
cv2.destroyAllwindows()

五:调整亮度,变暗

import numpy as np
import cv2

img_mat = cv2.imread("dog.jpg")
# 暗
img4 = (img_mat * 0.5).astype(np.uint8)
cv2.imshow("dog", img_mat)
cv2.imshow("black", img4)
cv2.waitKey(0)
cv2.destroyAllwindows()

六:垂直方向裁剪

import numpy as np
import cv2

img_mat = cv2.imread("dog.jpg")
# 垂直裁剪
height = img_mat.shape[0]
width = img_mat.shape[1]
img5 = img_mat[int(height / 2)::, :, :]
cv2.imshow("dog", img_mat)
cv2.imshow("vertical cut", img5)
cv2.waitKey(0)
cv2.destroyAllwindows()

七:水平方向裁剪

import numpy as np
import cv2

img_mat = cv2.imread("dog.jpg")
# 垂直裁剪
height = img_mat.shape[0]
width = img_mat.shape[1]
img5 = img_mat[:, int(width/2)::, :]
cv2.imshow("dog", img_mat)
cv2.imshow("vertical cut", img5)
cv2.waitKey(0)
cv2.destroyAllwindows()

八:两个方向同时裁剪,保留左上角

import numpy as np
import cv2

img_mat = cv2.imread("dog.jpg")
# 左上方点(50,0) width:250 height:100
img6 = img_mat[0:100, 50:50 + 250]
cv2.imshow("dog", img_mat)
cv2.imshow("vertical cut", img6)
cv2.waitKey(0)
cv2.destroyAllwindows()

九:高度方向 每隔一行取像素点

import numpy as np
import cv2

img_mat = cv2.imread("dog.jpg")
# 高度方向每隔一行取像素点
img8 = img_mat[::2]
cv2.imshow("dog", img_mat)
cv2.imshow("slice height", img8)
cv2.waitKey(0)
cv2.destroyAllwindows()

十:宽度方向 每隔一列取像素点

import numpy as np
import cv2

img_mat = cv2.imread("dog.jpg")
# 宽度方向每隔一列取像素点
img8 = img_mat[:, ::2]
cv2.imshow("dog", img_mat)
cv2.imshow("slice weight", img8)
cv2.waitKey(0)
cv2.destroyAllwindows()

十一:缩略图 高、宽度方向压缩 清晰度较差

import numpy as np
import cv2

img_mat = cv2.imread("dog.jpg")
# 缩略图
img8 = img_mat[::2, ::2]
cv2.imshow("dog", img_mat)
cv2.imshow("slice img", img8)
cv2.waitKey(0)
cv2.destroyAllwindows()

十二:灰度处理

import numpy as np
import cv2

img_mat = cv2.imread("dog.jpg")
# 灰度处理:加权求和 BGR
# gray = r*0.299 + g*0.587 + b*0.114 加权求和
img8 = img_mat[:, :, 2] * 0.299 + img_mat[:, :, 1] * 0.587 + img_mat[:, :, 0] * 0.114
img8 = img8.astype(np.uint8)
print(img8)
cv2.imshow("dog", img_mat)
cv2.imshow("gray img", img8)
cv2.waitKey(0)
cv2.destroyAllwindows()

  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chenruhan_QAQ_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值