读取
import cv2
def cv_show(neme,img):
# cv2.namedWindow(neme, cv2.WINDOW_NORMAL)
cv2.imshow(neme, img)
cv2.waitKey(0)
cv2.destroyAllWindows()
def cv_show(neme,img):
# 调整宽高(再次运行也只会加载你调整后的宽高)
# cv2.namedWindow(neme, cv2.WINDOW_NORMAL)
cv2.imshow(neme, img) # 必要参数:名字和变量名
cv2.waitKey(0) # 括号中0=任意键终止,单位为毫秒级别
cv2.destroyAllWindows() # 关闭所有窗口--图片
# cv2读取图像是BGR 不是RGB
image = cv2.imread("./8.jpg")
cv_show("name", image)
# 直接转黑白图,不建议这样做
image = cv2.imread("./8.jpg", 0)
中文路径 无法读取图像
import numpy as np
import cv2
def cv_show(neme, img):
# cv2.namedWindow(neme, cv2.WINDOW_NORMAL)
cv2.imshow(neme, img)
cv2.waitKey(0)
cv2.destroyAllWindows()
img_file = "./images/test/db/刘亦菲.jpg"
# 读取图片
# img = cv2.imread(img_file)
# 解决中文路径问题
img = cv2.imdecode(np.fromfile(img_file, dtype=np.uint8), -1)
cv_show('neme', img)
生成一张纯黑图
img = np.zeros([300, 300, 3])
保存 可使用.jpg、.png
cv2.imwrite('1.png',image)
图像基本属性
print(img.shape) # 高、宽、维度
print(img.size) # 像素个数
print(img.dtype) # 类型:例如:uint8
指定左上、右下、截图
# 截图 y1 y2 x1 x2
ball = img[0:100, 0:400]
cv_show("n", ball)
判断是否OpenCV图片类型
if (isinstance(img, np.ndarray)): # 判断是否OpenCV图片类型
全屏截图
import PIL.ImageGrab
scr = PIL.ImageGrab.grab()
scr.save("scr.png")
自定义大小截图
import pyautogui
import cv2
import numpy as np
img = pyautogui.screenshot(region=[0,0, 1920, 1080]) # 分别代表:左上角坐标,宽高
#对获取的图片转换成二维矩阵形式,后再将RGB转成BGR
#因为imshow,默认通道顺序是BGR,而pyautogui默认是RGB所以要转换一下,不然会有点问题
img = cv2.cvtColor(np.asarray(img), cv2.COLOR_RGB2BGR)
cv2.imshow("截屏", img)
cv2.waitKey(0)
# pip install pyautogui -i https://pypi.tuna.tsinghua.edu.cn/simple/
# pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple/
图像水平、垂直拼接
注意:图像大致需要一致
# 可多张拼接
img = cv2.hconcat([image1, image2, image3]) # 水平拼接
img = cv2.vconcat([image1, image2]) # 垂直拼接
三通道
# 只保留单通道 3原色
# 将3种的两个置0 剩下的就是单通道啦
cur_img = img.copy() # 想保留哪个通道,就注释掉哪个
cur_img[:, :, 0] = 0 # 0蓝B
cur_img[:, :, 1] = 0 # 1绿G
cur_img[:, :, 2] = 0 # 2红R
cv_show("n", cur_img)
下面的程序将会加载一个灰度图,显示图片,按下’s’键保存后退出,或者
按下 ESC 键退出不保存。
import cv2
img = cv2.imread('./8.jpg',0)
cv2.imshow('image',img)
k = cv2.waitKey(0)
if k == 27: # wait for ESC key to exit
cv2.destroyAllWindows()
elif k == ord('s'): # wait for 's' key to save and exit
cv2.imwrite('messigray.png',img)
cv2.destroyAllWindows()