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,)
参数说明:原始图像,文字,坐标(左上角),字体,字体大小、颜色、字体线条粗细