1.读取图像(路径的选择:相对路径,绝对路径)

2.读取图像(方式:彩色,灰色)

3.获取图像数据(BGR矩阵,长、宽和BGR,图像类型)

4.保存图像(保存可以指定路径保存,也可以用相对路径进行保存)

5.打开图像(窗口的命名,打开的时间,图像的引用)

import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt

#----------------------------   1.读取图像(路径)
#cv2.imread("C:/Users/8.png")  #绝对路径: 路径的反斜杠需要转换 !!!!!!(将\转换为/,因为LINux识别不了)
img = cv.imread('666.jpg')       #相对路径 读取照片 (读取的是vision中图像)            (常用)

#----------------------------   2.读取图像(方式)
#img = cv.imread('666.jpg',cv.IMREAD_GRAYSCALE)   #以灰度模式加载图像(黑白)
#img = cv.imread('666.jpg',cv.IMREAD_UNCHANGRED)  #彩色
#img = cv.imread('666.jpg',cv.IMREAD_COLOR)       #彩色,但图像的透明度会被忽略
#img = cv.imread('666.jpg')                       #彩色

#img = img[0:100,0:50]    # 选取部分 进行截取 [高h:100,宽w:50]
#img = img.copy()         # 对图像进行复制

#----------------------------   3.获取图像数据

#print(np.array(img))    #输出RGB矩阵  (在这里的数值显示的是:BGR !倒过来的【三维】
#print(img.shape)        #输出(1080, 1920, 3)  [在这里的数值显示的是:h(high),w(width),c(BGR)]
#print(type(img))        #输出类型 <class 'numpy.ndarray'>
#print(img.size)         #输出: 6220800 【像素点大小】
#print(img.dtype)        #输出: uint8    【图片数值类型】
'''
b,g,r = cv.split(img)   #提取 BGR 颜色通道
print(r.shape)    #对r通道进行提取
print(g.shape)    #对g通道进行提取
print(b.shape)    #对b通道进行提取
'''
'''
#---------------------只保留R [转化为红色图片]
def red():
    img2 = img.copy()
    img2[:,:,0]=0         #将B通道的值全部变为0
    img2[:,:,1]=0         #将G通道的值全部变为0
    cv.imshow('666',img2)
'''
'''
#---------------------只保留G [转化为绿色图片]
def green():
    img2 = img.copy()
    img2[:,:,0]=0         #将B通道的值全部变为0
    img2[:,:,2]=0         #将G通道的值全部变为0
    cv.imshow('666',img2)
'''
'''
#---------------------只保留B [转化为蓝色图片]
def green():
    img2 = img.copy()
    img2[:,:,1]=0         #将B通道的值全部变为0
    img2[:,:,2]=0         #将G通道的值全部变为0
    cv.imshow('666',img2)
'''

#----------------------------   4.保存数据

#cv.imwrite('666.jpg',img)             #保存图像[直接将img图像存储在vision中,命名为666.jpg]
#cv.imwrite('C:/Users/Pan/1.jpg',img)  #保存图像[将img图像存储在设定好的地方]


#----------------------------   5.打开图像
'''
#----------------------------第一种方法:
def open_img(name,img):      # 设置打开图片函数: open_img(name,img)
    cv.imshow(name,img)      #(打开图片,name为定义窗口名字[而且必须为'xxx'] 是字符串类型 ,img为引用图像名字)
    cv.waitKey(0)            #(设置时间,0为一直打开,单位为毫秒)
    cv.destroyAllWindows()   # 创建Windows窗口

name = '6'
open_img(name,img)

'''
#----------------------------第二种方法:
#plt.imshow(img)        #问题: 为什么是蓝色图像?
#plt.show()             #因为:cv.imread()读取的是值为:BGR
                        #但是:plt.imshow()取数值绘图是:RGB

#----------------------------解决方法:
b,g,r = cv.split(img)     #取出颜色通道的值
img2 = cv.merge([r,g,b])  #把BGR转化为RGB  就可以了!!!
plt.imshow(img2)
plt.show()