# cv2.imread(filepath,flags) #读取图片
# filepath:
# 待读取图片的完整路径
# Example:'C:\\Users\\帅ZR帅\\Desktop\\1.jpg'
# flages :
# {cv2.IMREAD_COLOR,cv2.IMREAD_GRAYSCALE,cv2.IMREAD_UNCHANGED}
# 等效{1,0,-1}
# cv2.IMREAD_COLOR:默认参数,读彩色图片,不包括alpha通道
# cv2.IMREAD_GRAYSCALE:读灰度图片
# cv2.IMREAD_UNCHANGED:读完整图片,包括alpha通道
# Example:cv2.imread('C:\\Users\\帅ZR帅\\Desktop\\1.jpg',cv2.IMREAD_COLOR) 等效于 cv2.imread('C:\\Users\\帅ZR帅\\Desktop\\1.jpg',1)
# cv2.imshow(windowname,image) #在窗口中显示图片
# windowname:
# 窗口名
# Example: 'Window_1'
# image:
# 要显示的图像 类型为numpy.ndarray (多维数组)
# Example: image
# cv2.namedWindow(windowname,flags) #创建窗口
# windowname:
# 待创建的窗口名
# Example: 'Window_1'
# flags:
# {cv2.WINDOW_NORMAL,cv2.WINDOW_AUTOSIZE}
# 等效{0,1}
# cv2.WINDOW_NORMAL: 窗口大小可调
# cv2.WINDOW_AUTOSIZE:窗口大小不可调
# Example: cv2.namedWindow('window_1',cv2.WINDOW_NORMAL) 等效于 cv2.namedWindow('window_1',0)
# cv2.destoryWindow(windowname) #销毁指定窗口 回收内存
# windowname:
# 待销毁的窗口名
# Example: 'window_1'
# cv2.destroyAllWindows() #销毁所有窗口 回收内存
# 无参数
# image.shape #image图像的基本参数:宽,高,通道数
# Example: data = image.shape
# cv2.imwrite(filepath,image) #保存图像
# filepath:
# 保存完整路径
# Example: 'C:\\Users\\帅ZR帅\\Desktop\\2.jpg'
# image:
# 需要保存的图像 类型为numpy.ndarray (多维数组)
题目: 读取图片1.jpg 并将其显示在窗口window_1中 然后将其保存为2.jpg
解题思路:
# 想要对一副图像进行处理
# 首先我们需要用读取函数(cv2.imread)将原图从文件中提取出来,
# 处理完之后我们要用显示函数(cv2.imshow)来观察处理效果,
# 但是想要显示一副图像我们需要一个容器,所以要用窗口创建函数(cv2.namedWindow)来创建一个容器,
# 最终我们需要用保存函数(cv2.imwrite)来保存处理后的图像,
#代码详解#
import cv2
import numpy as np
image = cv2.imread('1.jpg',)#以默认模式(cv2.IMREAD_COLOR)读取当前文件夹下的1.jpg 图像, 并将#其以N维数组的形式存入 image
print(type(image)) #打印 image的类型
print(image) #打印 image
cv2.namedWindow('window_1',1)#创建一个 名字为window_1 大小可变的窗口
#这样我们就获得了一个 名字为window_1 大小可变的窗口
#之后显示图片的时候就可以直接 填入这个窗口名 来调用这个窗口
#同时需要记住 当一个窗口不再使用时 需要将其销毁 以便回收内存
cv2.imshow('window_1',image) #在窗口中显示图片
# 这里我们直接 传入 之前读取的图片image 以及创建的窗口window_1
# 值得一提
# 即使之前没有用 函数 cv2.nameWindow() 函数 来创建一个窗口 也可以直接调用imshow()函数
# imshow()函数会为你以默认参数创建一个窗口大小不可调的窗口
# 但是之前如果没用 函数 cv2.imread 来读取图片并将其保存在多维数组中 则会报错 : name #'image' #is not defined
cv2.waitKey()
cv2.destroyWindow('window_1') #销毁之前创建的 名字为window_1的窗口
#也可以使用 cv2.destroyAllWindows() 来销毁所有的窗口
cv2.imwrite('2.jpg',image)#,在当前文件夹中创建文件2.jpg,并将多维数组image 写入其中