图像识别
注意:cv2中的色彩排列是(b,g,r),而matplotlib库中的排列方式是(r,g,b),本文件中采用plt进行输出,因此颜色不是准确的颜色
1. OpenCV,机器视觉
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
original = cv.imread('../data/forest.jpg')
print(original.shape, original.dtype)
cv.imshow('Original', original) # 显示图片(是非阻塞函数)
# cv.waitKey() # 等待按键响应
plt.imshow(original)
(397, 600, 3) uint8
red = np.zeros_like(original)
red[..., 0] = original[..., 0] # 0表示红色通道
cv.imshow('Red', red)
plt.imshow(red)
green = np.zeros_like(original)
green[..., 1] = original[..., 1] # 1表示绿色通道
cv.imshow('Green', green)
plt.imshow(green)
blue = np.zeros_like(original)
blue[..., 2] = original[..., 2] # 2表示蓝色通道
cv.imshow('Blue', blue)
plt.imshow(blue)
裁剪图片
h, w = original.shape[:2]
l, t = int(w / 4), int(h / 4)
r, b = int(w * 3 / 4), int(h * 3 / 4)
cropped = original[t:b, l:r]
cv.imshow('Cropped', cropped)
plt.imshow(cropped)
缩小图片
scaled1 = cv.resize(original, (int(w / 4), int(h / 4)))
plt.imshow(scaled1)
颜色差值
scaled2 = cv.resize(original, (int(w / 4), int(h / 4)), interpolation=cv.INTER_LINEAR)
plt.imshow(scaled2