CV2 图像处理
此文章介绍如何实现图片和数组之间的转换前言
此文章介绍如何实现图片和数组之间的转换
一、图片?
图片就就是一个一个一个像素块,通过矩阵来表示,
几种图片格式的介绍:
https://zhuanlan.zhihu.com/p/143649897
二、CV2基本函数介绍
1.引入库
代码如下(示例):
import numpy as np
import cv2
import matplotlib.pyplot as plt
from PIL import Image
2.基本函数与功能
代码如下(示例):
cv2.imread 读取图像
image = cv2.imread(image_file)#image_file:图片路径
cv2.split(image) 通道分离
#通道分离,注意顺序BGR不是RGB
(B, G, R) = cv2.split(image)
# 显示各个分离出的通道
cv2.imshow("Red", R)
cv2.imshow("Green", G)
cv2.imshow("Blue", B)
cv2.merge() 合并通道
image=cv2.imread("/home/zje/Pictures/lena.jpeg");#读取要处理的图片
B,G,R = cv2.split(image); #分离出图片的B,R,G颜色通道
zeros = np.zeros(image.shape[:2],dtype="uint8");#创建与image相同大小的零矩阵
cv2.imshow("BLUE",cv2.merge([B,zeros,zeros]));#显示 (B,0,0)图像
cv2.imshow("GREEN",cv2.merge([zeros,G,zeros]));#显示(0,G,0)图像
cv2.imshow("RED",cv2.merge([zeros,zeros,R]));#显示(0,0,R)图像
使用函数cv2.imwrite(file,img,num)保存一个图像。第一个参数是要保存的文件名,第二个参数是要保存的图像。可选的第三个参数,它针对特定的格式:对于JPEG,其表示的是图像的质量,用0 - 100的整数表示,默认95;对于png ,第三个参数表示的是压缩级别。默认为3.
三、实现转换
例子 实现由三通道照片转换为单通道def change_image_channels(image):
# 3通道转单通道
if image.mode == 'RGB':
r, g, b = image.split()
return b
image = Image.open(path)#path照片路径
image1=change_image_channels(image)
image1=np.array(image1)
cv2.imwrite(path,image1)