1:cv2.cvtColor()调整颜色格式

用于将图像从一种颜色空间转换为另一种颜色空间。

语法:cv2.cvtClolor(src,code[,dst[,dstCn]])

src:它是要更改其色彩空间的图像(原图)。
code:它是色彩空间转换代码。
dst:它是与src图像大小和深度相同的输出图像。它是一个可选参数。
dstCn:它是目标图像中的频道数。如果参数为0,则通道数自动从src和代码得出。它是一个可选参数。

返回值:它返回一个图像。

#颜色空间及cv2.cvtColor 转换函数
import matplotlib.pyplot as plt
import cv2

img_BGR = cv2.imread('test.jpg')  # cv2.imread()读取照片默认BGR格式
plt.subplot(3, 3, 1)#plt.subplot()函数用于直接指定划分方式和位置进行绘图,把显示界面分割成3*3的网格,第一幅图
plt.imshow(img_BGR);
plt.axis('off');
plt.title('BGR')

img_RGB = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2RGB)#一般照片是GRB格式
plt.subplot(3, 3, 2)
plt.imshow(img_RGB);
plt.axis('off');
plt.title('RGB')

img_GRAY = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2GRAY)#Gray = (R*30 + G*59 +B*11 +50)/100
plt.subplot(3, 3, 3);
plt.imshow(img_GRAY);
plt.axis('off');
plt.title('GRAY')

img_HSV = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2HSV)
plt.subplot(3, 3, 4)
plt.imshow(img_HSV);
plt.axis('off');
plt.title('HSV')#仅有俩个数值

img_YcrCb = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2YCrCb)
plt.subplot(3, 3, 5)
plt.imshow(img_YcrCb);
plt.axis('off');
plt.title('YcrCb')

img_HLS = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2HLS)
plt.subplot(3, 3, 6)
plt.imshow(img_HLS);
plt.axis('off');
plt.title('HLS')

img_XYZ = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2XYZ)
plt.subplot(3, 3, 7)
plt.imshow(img_XYZ);
plt.axis('off');
plt.title('XYZ')

img_LAB = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2LAB)
plt.subplot(3, 3, 8)
plt.imshow(img_LAB);
plt.axis('off');
plt.title('LAB')

img_YUV = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2YUV)
plt.subplot(3, 3, 9)
plt.imshow(img_YUV);
plt.axis('off');
plt.title('YUV')
plt.show()

 转换后:

cv2开运算 cv2.cvtcolor()的功能与参数_缩放

2.cv2.resize()调整照片大小

语法:cv2.resize(InputArray src,OutputArray dst,size,fx,fy,interpolation)

InputArray src:输入图片,原图像,即待改变大小的图像;
OutputArray dst:输出图片,改变后的图像。这个图像和原图像具有相同的内容,只是大小和原图像不一样而已;
size:输出图片的尺寸
fx,fy:沿x轴和y轴的缩放系数,width、height方向的缩放比例

interpolation:插入方式。插值方法有INTER_NEAREST最近邻插值,INTER_LINEAR双线性插值(默认设置),INTER_AREA使用像素区域关系进行重采样,INTER_CUBIC4*4像素领域的双三次插值。

输出的格式是(宽,高)

例如:


context_cv = cv2.resize(context, (224,224))就是读取context这张照片后将照片转为224*224的大小叫做context_cv,默认双线性插值


#代码练习
import cv2 as cv
# 读入原图片
img = cv.imread('test.jpg')
# 打印出图片尺寸
print(img.shape)
# 将图片高和宽分别赋值给x,y
x, y = img.shape[0:2]
# 显示原图
cv.imshow('OriginalPicture', img)
# 缩放到原来的二分之一,输出尺寸格式为(宽,高)
img_test1 = cv.resize(img, (int(y / 2), int(x / 2)))
cv.imshow('resize0', img_test1)
cv.waitKey()
# 最近邻插值法缩放
# 缩放到原来的四分之一
img_test2 = cv.resize(img, (0, 0) , fy=0.25,fx=0.25, interpolation=cv.INTER_NEAREST)
cv.imshow('resize1', img_test2)
cv.waitKey()
cv.destroyAllWindows()

3. cv2.imwrite()写入照片

语法: cv2.imwrite(filename, image)

filename:代表文件名的字符串。文件名必须包含图像格式,例如.jpg,.png等。

 image:就是要保存的图像。

返回值:如果成功保存图像,则返回true。

import cv2
import os
# Image path
image_path = r'test.jpg'#读取的照片
# Image directory
directory = r'E:\pythonProject\cv2'#存放的照片文件夹
# to read the image
img = cv2.imread(image_path)
# Change the current directory
# to specified directory
os.chdir(directory)
# List files and directories
print("Before saving image:")
print(os.listdir(directory))
# Filename
filename = 'savedImage.jpg'
# Using cv2.imwrite() method
# Saving the image
cv2.imwrite(filename, img)
# List files and directories
print("After saving image:")
print(os.listdir(directory))#会打印当前文件夹所有文件
print('Successfully saved')

结果:

cv2开运算 cv2.cvtcolor()的功能与参数_缩放_02