使用opencv对图像进行一些简单的处理
首先知道自己的工作目录
import os
cwd=os.getcwd()
命名一张图片
my_image='lenna.png'
获得图片路径
image_path=os.path.join(cwd,my_image)
import cv2
image=cv2.imread(my_image) #imread()函数将图片转换为ndarray数组
image.shape#(512,512,3),与pillow不同的是,opencv返回的是BGR格式,每个像素能取的像素强度范围是[0,255],通过max和min获取最大和最小值
展现一张图片
cv2.imshow('image',image)
也可用matplotlib
import matplotlib.pyplot as plt
plt.figure(figsize=(10,10))
plt.imshow(image)
plt.show()
结果是蓝色的一张图片,这是因为返回的是BGR格式,经过下面的处理,返回的就是正常的格式了。
new_image=cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
plt.figure(figsize=(10,10))
plt.imshow(new_image)
plt.show()
可将png转为jpg
cv2.imwrite("lenna.jpg", image)
2.把彩色图像变成灰色图像
image_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
image_gray.shape #(512,512)
将它画出来
plt.figure(figsize=(10, 10))
plt.imshow(image_gray, cmap='gray')
plt.show()
3.分离不同的通道
baboon=cv2.imread('baboon.png')
blue, green, red = baboon[:, :, 0], baboon[:, :, 1], baboon[:, :, 2]
im_bgr = cv2.vconcat([blue, green, red])
plt.figure(figsize=(10,10))
plt.subplot(121)
plt.imshow(cv2.cvtColor(baboon, cv2.COLOR_BGR2RGB))
plt.title("RGB image")
plt.subplot(122)
plt.imshow(im_bgr,cmap='gray')
plt.title("Different color channels blue (top), green (middle), red (bottom) ")
plt.show()