opencv 基础知识
cv2.imread
读入的图片, 其shape
为(h, w, c)
, 颜色通道顺序为(b, g, r)
常用颜色
读取图片
1 | img = cv2.imread(img_path) |
保存图片
1 | cv2.imwrite(save_path, img) |
文本
(startX, startY) 为左上角坐标1
cv2.putText(img, "text test", (startX, startY), cv2.FONT_HERSHEY_SIMPLEX, font_size, (B,G,R), thickness)
画框
(x,y) 为左上角坐标
(x+h,y+w) 为右下角坐标1
cv2.rectangle(img,(x,y), (x+h,y+w), (0,255,0), thickness)
waitKey()
1 | keypress = cv2.waitKey(200) # 200为当前图片的显示持续时间 |
opencv与numpy
opencv的基础类型为numpy.ndarray
, 因此可以直接使用 ndarray
的一些属性的方法
1 | import cv2 |
利用 cv2.merge
方法将 numpy.ndarray
数据转换成opencv的图片数据:
1 | # 图片的分辨率为300*200(宽*高),这里b, g, r设为随机值,注意dtype属性 |
通道的拆分与合并
拆分: cv2.split
合并: cv2.merge
1 | # 图片的分辨率为800*200(宽*高),这里b, g, r设为随机值,注意dtype属性 |
将 BGR 转换成 RGB 通道顺序
1 | # 方法一: |
PIL 与 cv2 格式互相转换
PIL.Image
读入的图片数据类型不是 numpy 数组, 它的size
属性为 (w, h)
, 利用np.array
转换成 numpy 数组后, 它的通道顺序为 (r, g, b)
1 | from PIL import Image |
用matplotlib显示图像
1 | b,g,r=cv2.split(img) |
截取子图
1 | # 已知子图左上角坐标 (x1, y1), 右下角坐标(x2, y2) |
opencv 核心图像算法
cv2
1 | import cv2 |