OpenCV图像处理基础操作汇总

1、使用opencv读写图像

OpenCV支持jpg、png、tif等格式图像读取。

import cv2

import matplotlib.pyplot as plt

path = ‘lena.jpg’

img = cv2.imread(path)

cv2.imwrite(‘lena1.jpg’, img)

2、BGR转RGB

opencv是按照bgr方式读取图像,而plt按照rgb格式显示图像,因此会出现显示异常。为了正常显示,需要进行顺序转换,由BGR转为RGB。

使用opencv:

img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

使用矩阵操作:

img = img[:, :, ::-1]

import cv2
import matplotlib.pyplot as plt
import numpy
path = 'lena.jpg'
img = cv2.imread(path)
img = cv2.cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
plt.imshow(img)
plt.show()

OpenCV图像处理基础操作汇总_第1张图片

3、获取图像宽高

height, width = img.shape[:2]

或者

img_shape = img.shape

height = img_shape[0]

width = img_shape[1]

4、调整图像尺寸

cv2.resize(img, (height, width), cv2.INTER_LINEAR)

第一个参数为原始图像,第二个为调整后尺寸,第三个为插值算法设置,INTER_NEAREST、INTER_LINEAR、INTER_CUBIC分别为最邻近插值、双线性插值、双三次插值。

import cv2
import matplotlib.pyplot as plt
import numpy
path = 'lena.jpg'
img = cv2.imread(path)
img = cv2.cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
img = cv2.resize(img, (300, 200), cv2.INTER_LINEAR)
plt.imshow(img)
plt.show()

OpenCV图像处理基础操作汇总_第2张图片

5、将图像转换为python字节

import cv2

path = 'lena.jpg'

img = cv2.imread(path)

byteArray = bytearray(img)

print(byteArray)

6、将图像一部分区域拷贝到另一部分。

import cv2

import matplotlib.pyplot as plt

path = 'lena.jpg'

img = cv2.imread(path)

img = img[:, :, ::-1]

image_block = img[0:100, 0:100]

img[200:300,200:300] = image_block

plt.imshow(img)

plt.show()

 OpenCV图像处理基础操作汇总_第3张图片

7、使用canny提取边缘

import cv2

import matplotlib.pyplot as plt

path = 'lena.jpg'

img = cv2.imread(path)

img = cv2.Canny(img, 100, 150)

plt.imshow(img)

plt.show()

 OpenCV图像处理基础操作汇总_第4张图片

8、在图像上绘制矩形框

cv2.rectangle(img, (350, 120), (470, 520), (0, 255, 0), 2)

第一个参数为原图,第二和第三个参数为图像左上角和右下角坐标,第四个参数为线框颜色,第五个参数为线宽。

import cv2

import matplotlib.pyplot as plt

import numpy

path = 'person.jpg'

img = cv2.imread(path)

img = cv2.rectangle(img, (350, 120), (470, 520), (0, 255, 0), 2)

plt.imshow(img)

plt.show()

OpenCV图像处理基础操作汇总_第5张图片

9、镜像变换

水平镜像:img = cv2.flip(img,1,dst=None)

垂直镜像:img = cv2.flip(img,0,dst=None)

对角镜像:img = cv2.flip(img,-1,dst=None)

10、图像滤波

均值滤波:dst = cv2.blur(img, [5, 5])

中值滤波:dst = cv2.medianBlur(img, 7)

双边滤波:dst = cv2.bilateralFilter(img, 10, 30, 30)

11、图像添加文字

cv2.putText(img, text, (x, y), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0, 255, 0), 2,)

参数说明:原始图像,文字,坐标(左上角),字体,字体大小、颜色、字体线条粗细

你可能感兴趣的:(python,OpenCV,opencv,图像处理,计算机视觉)