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()

python 之 numpy图片处理 矩阵操作_第1张图片

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

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()

python 之 numpy图片处理 矩阵操作_第2张图片

五:调整亮度,变暗

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()

python 之 numpy图片处理 矩阵操作_第3张图片

六:垂直方向裁剪

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()

python 之 numpy图片处理 矩阵操作_第4张图片

七:水平方向裁剪

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()

python 之 numpy图片处理 矩阵操作_第5张图片

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

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()

python 之 numpy图片处理 矩阵操作_第6张图片

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

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()

python 之 numpy图片处理 矩阵操作_第7张图片

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

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()

python 之 numpy图片处理 矩阵操作_第8张图片

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

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()

python 之 numpy图片处理 矩阵操作_第9张图片

十二:灰度处理

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()

python 之 numpy图片处理 矩阵操作_第10张图片

你可能感兴趣的:(python,numpy,opencv)