主要是为了记录下一些简单的命令。
一、读取图片- 读取出来的image为数组形式
- jpg图片为三通道(即通道顺序为BGR),读取出来为三维数组形式
- png图片为四通道(即通道顺序为BGRA),读取出来为四维数组形式,相比jpg,png多出来一个Alpha通道,代表的是透明度。png图片有两张读取方式,后面的参数是为了不更改数据格式,即保证读取的为四维数组
- 读取图片后面的参数为-1表示读取png图片,为0则表示读取灰度图
import cv2
image = cv2.imread('图片路径')
image = cv2.imread('xx.jpg') #读取jpg格式图片
image = cv2.imread('xx.png',cv2.IMREAD_UNCHANGED) #读取png格式图片
image = cv2.imread('xx.png',-1) #读取png格式图片
image = cv2.imread('xx.jpg',0) #读取灰度图
二、图片显示
cv2.imshow('',img) #显示图片
cv2.waitKey(0) #按键等待事件
cv2.destroyAllWindows() #摧毁窗口
三、图片保存
cv2.imwrite('图片保存路径',image)
四、其他操作
1、裁剪
- x0:裁剪范围起始x坐标(也即最小横坐标)
- y0:裁剪范围起始y坐标(也即最小纵坐标)
- x1:裁剪范围终止x坐标(也即最大横坐标)
- y1:裁剪范围终止y坐标(也即最大纵坐标)
import cv2
img = cv2.imread('xxx')
cutted = img[y0:y1,x0:x1]
2、拼接
- 以两张图片为例
- axis参数为0时,竖向拼接,为1时则为横向拼接
- 注:拼接时要注意两张图片的长宽等要相同,否则会报错
import cv2
import numpy as np
img1 = cv2.imread('xxx')
img2 = cv2.imread('xxx')
np.concatenate((img,img1), axis=1)
3、重设分辨率
import cv2
img = cv2.imread('xxx')
img = cv2.resize(img,(长,宽))
4、图像添加文字
cv2.putText(blank, 'Hello World', (0, 225),cv2.FONT_HERSHEY_TRIPLEX, 1.0, (255, 0, 0), 2)
- 第一个参数 blank是我们要添加文字的图片的名称,
- 第二个参数是想要添加的文字
- 第三个参数是文字的开头的坐标位置(注意OpenCV中坐标轴的方向)
- 第四、五个参数分别是字体和文字大小
- 倒数第二个参数是文字的颜色
- 最后是字体粗细
import cv2
import numpy as np
blank = np.zeros((255,255,3),dtype='uint8') #创建一个全黑的图片
cv2.putText(blank, 'Hello World', (0, 225),cv2.FONT_HERSHEY_TRIPLEX, 1.0, (255, 0, 0), 2)
cv2.imshow('', blank)
cv2.waitKey(0)
cv2.destroyAllWindows()
5、图像添加矩形框
cv2.rectangle(img, (x1, y1), (x2, y2), (100, 210, 20), 2)
- (x1,y1)是起始点的坐标
- (x2,y2)是结束点的坐标
- (100,210,20)画框颜色
- 2 是线体的粗细



