【OpenCV】图片操作

主要是为了记录下一些简单的命令。

一、读取图片

  • 读取出来的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 是线体的粗细

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