赞
踩
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()
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()
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()
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()
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()
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,)
参数说明:原始图像,文字,坐标(左上角),字体,字体大小、颜色、字体线条粗细
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。