精华内容
下载资源
问答
  • 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、pandas是什么?...示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、使用步骤 1.引入库 代码

    Python图像处理

    前言

    对图片的三通道进行分离,可用于生成灰度图等操作


    图片通道转换

    def change_image_channels(image):
        # 3通道转单通道
        if image.mode == 'RGB':
            r, g, b = image.split()#分离通道函数
        return b
    import numpy as np
    from tqdm import tqdm
    import os
    import cv2
    path=#图片路径
    save_path=#图片保存路径
    image = Image.open(path)
    image1=change_image_channels(image)
    image1=np.array(image1)
    cv2.imwrite(save_path,image1)
    
    展开全文
  • 使用单通道实现半透明效果

    千次阅读 2009-11-27 16:07:00
    众所周知,IE 6只支持单通道的PNG图片(即只有透明/不透明2种状态,gif图片的透明单通道透明),因此如果需要使用alpha透明的png图片时,往往需要对IE6设定滤镜来完成。本文这里介绍一个单通道的PNG-8(gif也可)...
      
    

    众所周知,IE 6只支持单通道的PNG图片(即只有透明/不透明2种状态,gif图片的透明单通道透明),因此如果需要使用alpha透明的png图片时,往往需要对IE6设定滤镜来完成。

    本文这里介绍一个单通道的PNG-8(gif也可)图片实现半透明效果的方法,不是万能的,在某些情况下适用。

    先看下效果图:

    设计效果图

    a:hover有半透明的背景色,对于大部分浏览器,都可以使用alpha透明的png-32图片来完成此效果,而对于IE6,可以采取一个变通的办法,使用一种栅格的方法来模拟半透明。

    在Fireworks里面建立一个透明背景的文件,就可以看到画布内显示的是白色和灰色交加的图案,如下图所示。

    白色和灰色交加的图案

    其实这就是我们借鉴的原理——白色为不透明区域,灰色区域为透明区域——来模拟半透明的效果,如下图所示。

    要实现的效果

     

    制作方法有很多种,在此介绍一种:

    1.在Fireworks内新建一个2px宽2px高的新文件,如下图所示。
    在Firefox内建立文件

    2.使用矩形矢量工具画2个1px宽高的正方形,颜色为黑色,如下图所示。
    填充方形

    3.保存文件(bg1.png )。

    4.在设计稿内,取一个背景色颜色值,位置如下图所示(颜色值为比较平均的颜色,可能需要反复尝试)。
    取色值

    5.再新建一个新文件,如下图所示(尺寸根据实际情况而定,源文件 )。
    新建文件2

    6.画一个和文件尺寸一样的矩形,如下图所示。
    矩形填充

    7.导出为png-8文件,优化设定如下图(也可以保存为gif图片)。
    优化选项

    8.在CSS应用此文件查看效果,如果颜色不合适,可以调整。

    在此不再赘述CSS的写法。

    这个方法适用在背景颜色比较单纯的情况,如果是颜色丰富的照片,其上的文字可能会不清晰,如下图所示。
    优化选项

    此方法只是一个研究,欢迎大家探讨。

    —-查看示例 —-

    展开全文
  • OpenCV与图像处理学习一——图像基础知识一、图像基础知识1.1 数字图像的概念1.2 数字图像的应用1.3 OpenCV介绍二、图像属性2.1 图像格式2.2 图像尺寸2.2.1 读入图像2.2.2 显示图像2.2.3 保存图像2.3 图像分辨率和...

    图像处理与OpenCV作为CV方向的基础,在正式系统地学习论文之前,有必要对其进行系统的学习。而OpenCV作为使用最为广泛的图像处理工具包,这里将其作为学习的工具,因为较为熟悉python,所以使用OpenCV的python接口来完成代码。

    图像处理与OpenCV的学习主要包括五个部分:

    • 图像基础知识
    • 图像处理
    • 图像分割
    • 图像特征与目标检测
    • 运动目标识别(视频)

    ps:OpenCV-python版的官方文档:https://docs.opencv.org/4.1.2/d6/d00/tutorial_py_root.html

    一、图像基础知识

    1.1 数字图像的概念

    数字图像又称为数码图像或数位图像,是二维图像用有限数字数值像素的表示,由数组成矩阵来表示。下图是一个例子:
    在这里插入图片描述
    我们看见的图像在计算机中其实是由一个个像素组成的,每个像素有其具体数值。

    也可以理解为一个二维函数 f(x,y),其中x和y是空间(平面)坐标,而在任意坐标处幅值 f 称为图像在该点处的强度或灰度。

    1.2 数字图像的应用

    图像处理、机器视觉与人工智能的关系:

    • 图像处理主要研究二维检测,处理一个图像或一组图像之间的相互转换的过程,包括图像滤波、图像识别、图像分割等问题。
    • 机器视觉主要研究映射到单幅或多幅图像上的三维场景,从图像中提取抽象的语义信息,实现图像理解是CV的终极目标。
    • 人工智能在计算机视觉上的目标就是解决像素值和语义之间的关系,主要的问题有图片检测、图片识别、图片分割和检索等。

    1.3 OpenCV介绍

    OpenCV于1999年由Intel建立;是一个开源发行的跨平台计算机视觉库;支持的操作系统有Linux、Windows、Android、macOS。

    由C函数与少量C++类构成,支持Python、Java、MATLAB等接口,是数字图像处理和CV领域最常见的工具包,是学习、科研、企业项目的好帮手。
    在这里插入图片描述
    OpenCV的安装(默认python已经安装):

    打开命令行,输入以下命令,即可自动下载安装:

    pip install opencv-contrib-python
    

    二、图像属性

    2.1 图像格式

    常见的图像格式如下所示:

    1. BMP格式:这是Windows系统下的标准位图格式,未经过压缩,一般图像文件会比较大,后缀为.bmp。
    2. JPEG格式:应用最广泛的图片格式之一,它采用一种特殊的有损压缩算法,达到比较大的压缩比(可达到2:1甚至40:1),后缀名为.jpg或.jpeg。
    3. GIF格式:不仅可以是一张静图,也可以是动图,并且支持透明背景图像,适用于多种操作系统,“体型”很小,网上很多小动画都是GIF格式。但是其色域不太广,只支持256色。
    4. PNG格式:与JPG格式类似,压缩比高于GIF,支持图像透明,支持Alpha通道调节图像的透明度。
    5. TIFF格式:图像格式复杂,存贮信息多,在Mac中广泛使用,非常有利于原稿的复制,很多地方将TIFF格式用于印刷。

    2.2 图像尺寸

    图像尺寸的长度和宽度是以像素为单位的,比如下面图片的尺寸是240×150,这个数字的单位就是像素。那么像素具体是什么含义?
    在这里插入图片描述

    像素pixel

    像素是数码影像最基本的单位。1.1那张图中数字化后图片变成了一个个小格子组成的大矩阵,每个小格子就是一个像素,它里面会有一个值,灰度像素点的值的范围在0~255之间,0表示黑色,255表示白色,其他值是介于黑白之间的不同灰;

    如果是彩色图,会需要用到红、绿、蓝三个通道的二维矩阵来表示,在每个通道中,每个值也介于0~255之间,0表示相应的基色,而255表示相应基色在该像素中取得的最大值。

    2.2.1 读入图像

    cv2.imread(	filename[, flags]	)
    

    参数:第一个参数为读入图像的路径;第二个则是读取的方式,常见方式有:

    • cv2.IMREAD_COLOR:默认方式,读取彩色图像,也可以用 1 来表示。
    • cv2.IMREAD_GRAYSCALE:读取图像为灰度图,也可以用 0 来表示。
    • cv2.IMREAD_UNCHANGED:读取彩色图,并且包括透明度通道,也可以用 -1 来表示。

    举例:

    # 导入opencv的python版本依赖库cv2
    import cv2
    # 使用opencv中imread函数读取图片,
    # 0代表灰度图形式打开,1代表彩色形式打开
    img = cv2.imread('split.jpg', 1)
    print(img.shape)
    

    输出为这张图片的尺寸(shape):

    (459, 571, 3)
    

    2.2.2 显示图像

    cv2.imshow(	winname, mat )
    

    参数:第一个参数为窗口的名字(显示图片必须先有一个窗口),第二个参数为图像变量名。

    举例:

    # 导入opencv的python版本依赖库cv2
    import cv2
    # 使用opencv中imread函数读取图片,
    # 0代表灰度图形式打开,1代表彩色形式打开
    img = cv2.imread('split.jpg', 1)
    print(img.shape)
    # print(img)
    
    cv2.imshow('photo', img)
    k = cv2.waitKey(0)
    if k == 27:   # 输入ESC键退出
        cv2.destroyAllWindows()
    elif k == ord('s'): # 输入S键保存图片并退出
        cv2.imwrite('split_.jpg', img)
    cv2.destroyAllWindows()
    

    其中cv2.waitKey()函数是一个键盘绑定函数,单位为毫秒,即程序等待键盘输入多少毫秒,在这等待的时间内从键盘输入的键值会赋给k,然后k去进行下一步程序,如cv2.waitKey(1000)就是等待1s;如果参数值为0,则表示一直等待直到键盘有输入。

    另外,cv2.destroyAllWindows()函数表示删除窗口,默认删除所有窗口,参数为待删窗口名。

    2.2.3 保存图像

    cv2.imwrite( filename, img[, params] )
    

    参数:第一个参数为希望保存成的图像名(包括格式(后缀)),第二个参数为待写入的图像变量名。

    2.2.2的代码已经给出了举例。

    2.3 图像分辨率和通道数

    分辨率是指单位长度中所表达或截取的像素数目。每英寸图像内的像素点数,单位是像素每英寸(ppi)。图像的分辨率越高,像素点密度越高,图像越清晰。

    通道数是指图像的位深度,描述图像中每个pixel数值所占的二进制位数。位深度越大则图像能表示的颜色数越多,色彩就越丰富。有以下几种位深度:

    • 8位:单通道图像,也就是灰度图,灰度值取值种类为2 ^ 8 = 256种,即0~255。
    • 24位:三通道,彩色图像,每个通道都有8位。
    • 32位:三通道彩色图像加上透明度Alpha通道。

    2.3.1 灰度转化

    目的:将彩色图转化为灰度图。
    公式:

    • 3通道彩图->1通道灰图:GRAY = B * 0.114 + G * 0.587 + R * 0.299
    • 1通道灰图->3通道灰图:R = G = B = GRAY;A = 0

    函数为:

    cv2.cvtColor(	src, code[, dst[, dstCn]]	)
    

    参数:第一个参数就是待转化的图像变量;第二个参数是转换模式,OpenCV有二百多种模式转换,具体可以通过以下代码查看:

    >>> import cv2 as cv
    >>> flags = [i for i in dir(cv) if i.startswith('COLOR_')]
    >>> print( flags )
    

    输出如下:

    ['COLOR_BAYER_BG2BGR', 'COLOR_BAYER_BG2BGRA', 'COLOR_BAYER_BG2BGR_EA', 'COLOR_BAYER_BG2BGR_VNG', 'COLOR_BAYER_BG2GRAY', 'COLOR_BAYER_BG2RGB', 'COLOR_BAYER_BG2RGBA', 'COLOR_BAYER_BG2RGB_EA', 'COLOR_BAYER_BG2RGB_VNG', 'COLOR_BAYER_GB2BGR', 'COLOR_BAYER_GB2BGRA', 'COLOR_BAYER_GB2BGR_EA', 'COLOR_BAYER_GB2BGR_VNG', 'COLOR_BAYER_GB2GRAY', 'COLOR_BAYER_GB2RGB', 'COLOR_BAYER_GB2RGBA', 'COLOR_BAYER_GB2RGB_EA', 'COLOR_BAYER_GB2RGB_VNG', 'COLOR_BAYER_GR2BGR', 'COLOR_BAYER_GR2BGRA', 'COLOR_BAYER_GR2BGR_EA', 'COLOR_BAYER_GR2BGR_VNG', 'COLOR_BAYER_GR2GRAY', 'COLOR_BAYER_GR2RGB', 'COLOR_BAYER_GR2RGBA', 'COLOR_BAYER_GR2RGB_EA', 'COLOR_BAYER_GR2RGB_VNG', 'COLOR_BAYER_RG2BGR', 'COLOR_BAYER_RG2BGRA', 'COLOR_BAYER_RG2BGR_EA', 'COLOR_BAYER_RG2BGR_VNG', 'COLOR_BAYER_RG2GRAY', 'COLOR_BAYER_RG2RGB', 'COLOR_BAYER_RG2RGBA', 'COLOR_BAYER_RG2RGB_EA', 'COLOR_BAYER_RG2RGB_VNG', 'COLOR_BGR2BGR555', 'COLOR_BGR2BGR565', 'COLOR_BGR2BGRA', 'COLOR_BGR2GRAY', 'COLOR_BGR2HLS', 'COLOR_BGR2HLS_FULL', 'COLOR_BGR2HSV', 'COLOR_BGR2HSV_FULL', 'COLOR_BGR2LAB', 'COLOR_BGR2LUV', 'COLOR_BGR2Lab', 'COLOR_BGR2Luv', 'COLOR_BGR2RGB', 'COLOR_BGR2RGBA', 'COLOR_BGR2XYZ', 'COLOR_BGR2YCR_CB', 'COLOR_BGR2YCrCb', 'COLOR_BGR2YUV', 'COLOR_BGR2YUV_I420', 'COLOR_BGR2YUV_IYUV', 'COLOR_BGR2YUV_YV12', 'COLOR_BGR5552BGR', 'COLOR_BGR5552BGRA', 'COLOR_BGR5552GRAY', 'COLOR_BGR5552RGB', 'COLOR_BGR5552RGBA', 'COLOR_BGR5652BGR', 'COLOR_BGR5652BGRA', 'COLOR_BGR5652GRAY', 'COLOR_BGR5652RGB', 'COLOR_BGR5652RGBA', 'COLOR_BGRA2BGR', 'COLOR_BGRA2BGR555', 'COLOR_BGRA2BGR565', 'COLOR_BGRA2GRAY', 'COLOR_BGRA2RGB', 'COLOR_BGRA2RGBA', 'COLOR_BGRA2YUV_I420', 'COLOR_BGRA2YUV_IYUV', 'COLOR_BGRA2YUV_YV12', 'COLOR_BayerBG2BGR', 'COLOR_BayerBG2BGRA', 'COLOR_BayerBG2BGR_EA', 'COLOR_BayerBG2BGR_VNG', 'COLOR_BayerBG2GRAY', 'COLOR_BayerBG2RGB', 'COLOR_BayerBG2RGBA', 'COLOR_BayerBG2RGB_EA', 'COLOR_BayerBG2RGB_VNG', 'COLOR_BayerGB2BGR', 'COLOR_BayerGB2BGRA', 'COLOR_BayerGB2BGR_EA', 'COLOR_BayerGB2BGR_VNG', 'COLOR_BayerGB2GRAY', 'COLOR_BayerGB2RGB', 'COLOR_BayerGB2RGBA', 'COLOR_BayerGB2RGB_EA', 'COLOR_BayerGB2RGB_VNG', 'COLOR_BayerGR2BGR', 'COLOR_BayerGR2BGRA', 'COLOR_BayerGR2BGR_EA', 'COLOR_BayerGR2BGR_VNG', 'COLOR_BayerGR2GRAY', 'COLOR_BayerGR2RGB', 'COLOR_BayerGR2RGBA', 'COLOR_BayerGR2RGB_EA', 'COLOR_BayerGR2RGB_VNG', 'COLOR_BayerRG2BGR', 'COLOR_BayerRG2BGRA', 'COLOR_BayerRG2BGR_EA', 'COLOR_BayerRG2BGR_VNG', 'COLOR_BayerRG2GRAY', 'COLOR_BayerRG2RGB', 'COLOR_BayerRG2RGBA', 'COLOR_BayerRG2RGB_EA', 'COLOR_BayerRG2RGB_VNG', 'COLOR_COLORCVT_MAX', 'COLOR_GRAY2BGR', 'COLOR_GRAY2BGR555', 'COLOR_GRAY2BGR565', 'COLOR_GRAY2BGRA', 'COLOR_GRAY2RGB', 'COLOR_GRAY2RGBA', 'COLOR_HLS2BGR', 'COLOR_HLS2BGR_FULL', 'COLOR_HLS2RGB', 'COLOR_HLS2RGB_FULL', 'COLOR_HSV2BGR', 'COLOR_HSV2BGR_FULL', 'COLOR_HSV2RGB', 'COLOR_HSV2RGB_FULL', 'COLOR_LAB2BGR', 'COLOR_LAB2LBGR', 'COLOR_LAB2LRGB', 'COLOR_LAB2RGB', 'COLOR_LBGR2LAB', 'COLOR_LBGR2LUV', 'COLOR_LBGR2Lab', 'COLOR_LBGR2Luv', 'COLOR_LRGB2LAB', 'COLOR_LRGB2LUV', 'COLOR_LRGB2Lab', 'COLOR_LRGB2Luv', 'COLOR_LUV2BGR', 'COLOR_LUV2LBGR', 'COLOR_LUV2LRGB', 'COLOR_LUV2RGB', 'COLOR_Lab2BGR', 'COLOR_Lab2LBGR', 'COLOR_Lab2LRGB', 'COLOR_Lab2RGB', 'COLOR_Luv2BGR', 'COLOR_Luv2LBGR', 'COLOR_Luv2LRGB', 'COLOR_Luv2RGB', 'COLOR_M_RGBA2RGBA', 'COLOR_RGB2BGR', 'COLOR_RGB2BGR555', 'COLOR_RGB2BGR565', 'COLOR_RGB2BGRA', 'COLOR_RGB2GRAY', 'COLOR_RGB2HLS', 'COLOR_RGB2HLS_FULL', 'COLOR_RGB2HSV', 'COLOR_RGB2HSV_FULL', 'COLOR_RGB2LAB', 'COLOR_RGB2LUV', 'COLOR_RGB2Lab', 'COLOR_RGB2Luv', 'COLOR_RGB2RGBA', 'COLOR_RGB2XYZ', 'COLOR_RGB2YCR_CB', 'COLOR_RGB2YCrCb', 'COLOR_RGB2YUV', 'COLOR_RGB2YUV_I420', 'COLOR_RGB2YUV_IYUV', 'COLOR_RGB2YUV_YV12', 'COLOR_RGBA2BGR', 'COLOR_RGBA2BGR555', 'COLOR_RGBA2BGR565', 'COLOR_RGBA2BGRA', 'COLOR_RGBA2GRAY', 'COLOR_RGBA2M_RGBA', 'COLOR_RGBA2RGB', 'COLOR_RGBA2YUV_I420', 'COLOR_RGBA2YUV_IYUV', 'COLOR_RGBA2YUV_YV12', 'COLOR_RGBA2mRGBA', 'COLOR_XYZ2BGR', 'COLOR_XYZ2RGB', 'COLOR_YCR_CB2BGR', 'COLOR_YCR_CB2RGB', 'COLOR_YCrCb2BGR', 'COLOR_YCrCb2RGB', 'COLOR_YUV2BGR', 'COLOR_YUV2BGRA_I420', 'COLOR_YUV2BGRA_IYUV', 'COLOR_YUV2BGRA_NV12', 'COLOR_YUV2BGRA_NV21', 'COLOR_YUV2BGRA_UYNV', 'COLOR_YUV2BGRA_UYVY', 'COLOR_YUV2BGRA_Y422', 'COLOR_YUV2BGRA_YUNV', 'COLOR_YUV2BGRA_YUY2', 'COLOR_YUV2BGRA_YUYV', 'COLOR_YUV2BGRA_YV12', 'COLOR_YUV2BGRA_YVYU', 'COLOR_YUV2BGR_I420', 'COLOR_YUV2BGR_IYUV', 'COLOR_YUV2BGR_NV12', 'COLOR_YUV2BGR_NV21', 'COLOR_YUV2BGR_UYNV', 'COLOR_YUV2BGR_UYVY', 'COLOR_YUV2BGR_Y422', 'COLOR_YUV2BGR_YUNV', 'COLOR_YUV2BGR_YUY2', 'COLOR_YUV2BGR_YUYV', 'COLOR_YUV2BGR_YV12', 'COLOR_YUV2BGR_YVYU', 'COLOR_YUV2GRAY_420', 'COLOR_YUV2GRAY_I420', 'COLOR_YUV2GRAY_IYUV', 'COLOR_YUV2GRAY_NV12', 'COLOR_YUV2GRAY_NV21', 'COLOR_YUV2GRAY_UYNV', 'COLOR_YUV2GRAY_UYVY', 'COLOR_YUV2GRAY_Y422', 'COLOR_YUV2GRAY_YUNV', 'COLOR_YUV2GRAY_YUY2', 'COLOR_YUV2GRAY_YUYV', 'COLOR_YUV2GRAY_YV12', 'COLOR_YUV2GRAY_YVYU', 'COLOR_YUV2RGB', 'COLOR_YUV2RGBA_I420', 'COLOR_YUV2RGBA_IYUV', 'COLOR_YUV2RGBA_NV12', 'COLOR_YUV2RGBA_NV21', 'COLOR_YUV2RGBA_UYNV', 'COLOR_YUV2RGBA_UYVY', 'COLOR_YUV2RGBA_Y422', 'COLOR_YUV2RGBA_YUNV', 'COLOR_YUV2RGBA_YUY2', 'COLOR_YUV2RGBA_YUYV', 'COLOR_YUV2RGBA_YV12', 'COLOR_YUV2RGBA_YVYU', 'COLOR_YUV2RGB_I420', 'COLOR_YUV2RGB_IYUV', 'COLOR_YUV2RGB_NV12', 'COLOR_YUV2RGB_NV21', 'COLOR_YUV2RGB_UYNV', 'COLOR_YUV2RGB_UYVY', 'COLOR_YUV2RGB_Y422', 'COLOR_YUV2RGB_YUNV', 'COLOR_YUV2RGB_YUY2', 'COLOR_YUV2RGB_YUYV', 'COLOR_YUV2RGB_YV12', 'COLOR_YUV2RGB_YVYU', 'COLOR_YUV420P2BGR', 'COLOR_YUV420P2BGRA', 'COLOR_YUV420P2GRAY', 'COLOR_YUV420P2RGB', 'COLOR_YUV420P2RGBA', 'COLOR_YUV420SP2BGR', 'COLOR_YUV420SP2BGRA', 'COLOR_YUV420SP2GRAY', 'COLOR_YUV420SP2RGB', 'COLOR_YUV420SP2RGBA', 'COLOR_YUV420p2BGR', 'COLOR_YUV420p2BGRA', 'COLOR_YUV420p2GRAY', 'COLOR_YUV420p2RGB', 'COLOR_YUV420p2RGBA', 'COLOR_YUV420sp2BGR', 'COLOR_YUV420sp2BGRA', 'COLOR_YUV420sp2GRAY', 'COLOR_YUV420sp2RGB', 'COLOR_YUV420sp2RGBA', 'COLOR_mRGBA2RGBA']
    

    那么这里的灰度转化需要用到的是cv2.COLOR_BGR2GRAY和cv2.COLOR_GRAY2BGR。

    举例如下:

    # 导入opencv
    import cv2
    # 读入原始图像,使用cv2.IMREAD_UNCHANGED
    img = cv2.imread("girl.jpg", cv2.IMREAD_UNCHANGED)
    # 查看打印图像的shape
    shape = img.shape
    print(shape)
    # 判断通道数是否为3通道或4通道
    if shape[2] == 3 or shape[2] == 4 :
        # 将彩色图转化为单通道图
        img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
        cv2.imshow("gray_image", img_gray)
    cv2.imshow("image", img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

    显示出来的原图与灰度化之后的图为:
    在这里插入图片描述
    这里的灰度图是单通道的,若将此时的img_gray 再通过cv2.COLOR_GRAY2BGR转为三通道的图,它将还是灰度图,只是通道数变成了三个,三通道每个像素上的B、G、R值都相等,且等于img_gray 的那个像素,代码如下所示:

    # 导入opencv
    import cv2
    # 读入灰度图
    img = cv2.imread("girl_gray.jpg", cv2.IMREAD_UNCHANGED)
    # 查看打印图像的shape
    shape = img.shape
    print(shape)
    img_color = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)
    print(img_color.shape)
    cv2.imshow("color_image", img_color)
    cv2.imshow("image", img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

    效果如图所示:
    在这里插入图片描述
    视觉上细看还是有些许不同,我们搞清楚它们在计算机内的区别就行,再看下原图、单通道灰度图、三通道灰度图的尺寸区别:

    原图: (500, 500, 3)
    单通道灰度图: (500, 500)
    三通道灰度图: (500, 500, 3)
    

    2.3.2 RGB与BGR转化

    方法一:用OpenCV自带的方法

    # 导入opencv
    import cv2
    # 读入图
    img = cv2.imread("dark2.jpg", cv2.IMREAD_COLOR)
    cv2.imshow("Origin", img)
    img_cv_method = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
    cv2.imshow("After transform", img_cv_method)
    
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

    方法二:用numpy转换,本质就是互换B和R通道,所以将方法一的代码中的cvtColor函数的那一行替换为

    img_cv_method = img[:, :, ::-1]
    

    效果是一样的,得到的原图和转换之后的图的显示如下所示:
    在这里插入图片描述
    在这里插入图片描述

    2.3.3 通道分离

    目的:将彩色图像分成B、G、R三个单通道图像,方便我们对BGR三个通道分别操作。

    函数:

    cv.split(	m[, mv]	)
    

    参数:待分离通道的图像。

    举例:

    # 加载opencv
    import cv2
    src = cv2.imread('split.jpg')
    cv2.imshow('before', src)
    # 调用通道分离
    b, g, r = cv2.split(src)
    # 三通道分别显示
    cv2.imshow('blue', b)
    cv2.imshow('green', g)
    cv2.imshow('red', r)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

    结果如下所示:
    在这里插入图片描述
    在这里插入图片描述
    分离出来的每个通道都是一个灰度图。如果我们想看它们是对应通道的颜色,可以用下面的代码:

    # 导入opencv模块
    import numpy as np
    import cv2
    
    image = cv2.imread("split.jpg")  # 读取要处理的图片
    cv2.imshow("src", image)
    cv2.waitKey(0)
    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.waitKey(0)
    cv2.destroyAllWindows()
    

    效果如下所示:
    在这里插入图片描述
    在这里插入图片描述
    这里我们可以看出,单通道是没有颜色的,只有数值,R、G、B颜色要放在三通道中才能显示出来。

    2.3.4 通道合并

    目的:三个单独的通道合并为一个彩图。

    函数:

    cv.merge(	mv[, dst]	)
    

    参数:待合并的通道数,以list形式输入。

    举例:

    #加载opencv
    import cv2
    src=cv2.imread('split.jpg')
    cv2.imshow('before',src)
    #调用通道分离
    b,g,r=cv2.split(src)
    #将Blue通道数值修改为0
    b[:] = 0
    #合并修改后的通道
    img_merge=cv2.merge([b,g,r])
    cv2.imshow('merge',img_merge)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

    结果如下所示:
    在这里插入图片描述

    展开全文
  • 图像像素中通道概念解析

    千次阅读 2017-12-11 18:54:45
    通道图像处理中的应用 —通道起源 如果问“什么是 photoshop中最重要、最不可缺少的功能?”相信很多人的回答是“图层”。其实,在 photoshop3.0 之前,根本没有图层的功能。在图像处理中,最重要的功能是选区范围...

    通道在图像处理中的应用 —通道起源

    如果问“什么是 photoshop中最重要、最不可缺少的功能?”相信很多人的回答是“图层”。其实,在 photoshop3.0 之前,根本没有图层的功能。在图像处理中,最重要的功能是选区范围。只有正确地运用选区范围,才能够进行精确的合成。如果无法选区,也就无法作出相应的操作或处理。
    为了记录选区范围,可以通过黑与白的形式将其保存为单独的图像,进而制作各种效果。人们将这种独立并依附于原图的、用以保存选择区域的黑白图像称为“通道”(channel)。换言之,通道才是图像处理中最重要的部分。
    然而,真正懂得Photoshop通道的人并不多。对基本概念的一知半解,造成了技术上的断层,以致某些难点无法突破,这是由学习上的本末倒置所造成的。本文试图通过常用的图像处理方法,来探讨Photoshop通道的本质、运算及其特殊形式,帮助读者从中获得启发,理解本质,掌握应用。


      一、通道起源——传统照相合成技术及其数字化




    1 .遮板的应用  


    我们知道,照相排版行业的全面数字化不过是最近几年的事情。在此之前,图像合成工作者的工作量之大,内容之枯燥令人难以想象。他们必须将自己关在暗房里,在放大机下面作遮板,以便在底片曝光时有所选择。这种遮板其实就是有选择地在一张透明底片的不同部位涂上黑色染料,让光线不能透过。在曝光时,使遮板与底片重叠放置,这样,遮板上黑色区域下面的底片图像就因为被不透明的黑色遮住而不能被曝光,而只剩下透明部分对应的图像,也就是说完成了对照片的选择曝光。
    通道的概念,便是由遮板演变而来的。在通道中,以白色代替透明表示要处理的部分(选择区域);以黑色表示不需处理的部分(非选择区域)。因此,通道也与遮板一样,没有其独立的意义,而只有在依附于其他图像(或模型)存在时,才能体现其功用。而通道与遮板的最大区别,也是通道最大的优越之处,在于通道可以完全由计算机来进行处理,也就是说,它是完全数字化的。




    2 .通道——传统技术的数字化




    计算机可以不知疲倦的 24 小时工作,而且效率极高。因此,人们不遗余力地将一切可能的信息交由计算机处理,数字化的浪潮席卷全球,图像处理行业也不例外。
    如何将一张鲜活的照片变成我们硬盘上的“0 ”与“1 ”呢?在此之前,让我们来看看数字化信息的特点。首先,顾名思义,数字化信息最大的特点就是任何形式的信息都可以用数字完整、准确的表达出来,无论它是一条记录、一通电话、还是一段录影。数字化的这个特点是很容易理解的,我们称之为“解析”。
    其次,受到存储及计算等方面的限制,数字化信息的容量必须是有限的。也就是说,要将原来瞬息万变、细致入微的模拟信号解析开来,就必须有所取舍——用一个个足够小的,可解析的“信息元”取代原先的“信息流”。我们看到,这样的“采样”过程必然损失掉了部分元与元之间的原始数据。所以我们必须以某种指标来判断数字化信息与模拟信息的切近程度。显然,在有限长度的“信息流”中,所取的“信息元”越多,这种转化就越为精确,反之,所取的“信息元”越少,切近的程度就越为粗糙。所以,我们用“单位信息流”中“信息元”的数目多寡,来衡量数字化信息的逼真程度。在数字化音频中,这个指标称之为“采样率”与“量化精度”;在数字视频中,称之为“帧频”;在数字化图像中,则称之为“分辨率”。只要这个指标足够大,就足以迷惑人们的感官,让我们的耳朵、眼睛误以为这是一幅连贯的画面,或是一段流畅的音乐,而丝毫察觉不到停顿感或颗粒感。相对于模拟信息的“连续”性质而言,数字信息所具有的这种特点称为“间断”,或者称为“非连续”。
    现在,将一张图像用许多等距的水平线与竖直线分割开来,每一个小方格都成为一个像素(pixel),也就是一个独立的信息元,数字化的工作就完成一半了。接下来,我们要做的,就是记录每个像素的颜色信息。  由于我们要讨论的是黑白图像,因此只需记录黑、白、灰的信息(在黑白图像中,它与“亮度”、“灰度”的概念都是等价的),而不用考虑它的色相。但不要忘了,灰度也是有不同级别的,像“深灰”、“浅灰”或“中灰”。
    但仅仅用语言描述物体的亮度是远远不够的。上面提到,数字信息具有“间断”的特点,所以有人提出,用 0到 100 之间的整数表示灰度的级别:比如用 0表示纯黑色,用 100 表示纯白色,而 50 则表示将黑白均匀等量混合后所得的颜色。  众所周知,在计算机中,是以位( bit)存储数据的。每一个位只能存储“ 0 ”或“ 1 ”的信息,用以对应二进制的位。让我们看看要表示一个 0到 100 之间的任一整数,需要多少个二进制位: log 2 101=6.6582  也就是说,我们用了 7 位的存储空间,存储了仅用 6.6 位便可存储数据。难道这不是一种浪费么?而这种浪费的根源就在于,我们把黑白之间的灰阶,人为的划分为101段,而不是其他数目。
    所以,为了物尽其用,人们通常用2 的整数次幂来划分灰度级别。通常,人们将灰阶划分为256级(用 0~ 255 表示),而这也将正好占据 8个存储位(一字节)的空间。而 8 这个数字的由来,完全是为了使人的肉眼在任一相邻两级的变化中,没有丝毫的察觉。
    经历了上述两个步骤,我们将每个像素的灰度信息按照划分好的网格,从上到下,从左到右的顺序依次写入硬盘,数字化的工作就终于完成了。而当我们体验着计算机处理选区飞驰的感觉时,就会明白这一系列且纷繁复杂的转化与操作绝非徒劳了。


    二、几种特殊通道类型 




      由上一节内容可以看到,最早的通道概念是传统照相工艺中的遮板演变而来,用以表示选择范围的特殊图像。在这之后,计算机图像处理技术迅速发展,通道的概念又有了大幅度的拓展,进而涵盖了矢量绘图、三维建模、材质、渲染等诸多领域,而不再仅仅局限于平面设计中“选区范围”的原始意义。这些形形色色的“通道”都有着各自不同的名称、用途与计算方法,但又都与原始的通道概念有着本质上的相似,从本质上看:通道仍然没有脱离选区这个大的范围。


    1 .原色通道、 Alpha通道与专色通道 




      在前面的描述中,我们已经细致地了解了通道,即单色图像的数字化过程。那么,计算机又是如何用这些数字表示彩色图像的呢?首先,我们来了解一下原色的概念与加减法混合原理。


      在小学美术课上,我们就了解了红黄蓝三原色的概念。这里的红、黄、蓝准确地说应该是洋红(Magenta)、黄(Yellow )与青(Cyan )。将这三种颜色按不同的比例混合,可以得到其他的任意颜色;而这三种颜色最大程度的混合,就会使其范围内所有波长的可见光全部被吸收而显示出黑色。我们将这三种元色称为“光源三原色”,而将这种在混合过程中颜色亮度不断降低的混合方法称为减法混合。


      通常,在印刷中,应用的就是这种减法混合原理:在白色的纸张上通过光源三原色油墨的混合,得到各种色彩及其组合而成的图像。但在实际操作中,通过混合得到的黑色成本高、质量差,所以通常人为地添加一种成本较低的黑色油墨(blacK),与品、黄、青共同印制。因此,这种印刷的过程也被称为“四色印刷”,而其颜色体系被称为“ CMYK 色彩体系”。


    对应于印刷中减法混合原理的,是显示元件所遵循的加法混合原理。红( Red )、绿( Green )、蓝( Blue )三个颜色被称为“物体三原色”,三种颜色光的混合,可以得出其它任意色彩,而其最大混合将得到亮度最高的颜色——白色。我们知道,我们身边的绝大多数显示设备(如 CRT 阴极射线显像管、 LCD液晶面板等)都应用了加法混合原理。因此,这些设备在未启动时,底色越黑、亮度越低,其成像效果就越好。显示颜色体系也被称为 RGB颜色体系。


      自然法则是如此的简洁而优美,千变万化的色彩仅仅是三种简单原色的有机组合。因此,任意一张彩色图像都可以看作三张不同原色图像的叠加。既然任意的单色灰阶图都可以被视为通道,那么,我们就完全可以用 3 ~ 4 个通道来记录一张彩色照片。每一个通道记录一个对应原色在彩色图像上的分布信息,故我们称其为“原色通道”。用于显示用途的图片(例如网站彩页)可以被分解为 R 、 G 、 B三个原色通道,而需要输出的图片(例如海报、杂志封面、包装纸等)则被分解为 C、 M 、 Y三个原色通道与一个 K 通道。


      既然每个通道的单一像素需要 8个二进制位的存储空间,那么在三色通道中,每一个像素都由三个单色像素混合而成,也就需要 8 × 3=24个二进制位来进行存储。这样,在数据量变为原来的三倍时,可以表达的色彩数目就变为 2 24 ≈ 1.6× 10 7种。我们通常将由这1600 万个颜色所组成的色域称为“24bit 真彩色”。


    2 . Alpha通道 




    Alpha 通道是为保存选择区域而专门设计的通道。在生成一个图像文件时,并不必须产生 Alpha通道。通常它是由人们在图像处理过程中人为生成,并从中读取选择区域信息的。因此在输出制版时, Alpha通道会因为与最终生成的图像无关而被删除。但也有时,比如在三维软件最终渲染输出的时候,会附带生成一张Alpha通道,用以在平面处理软件中作后期合成。


      除了 photoshop 的文件格式 PSD 外, GIF与 TIFF 格式的文件都可以保存 Alpha通道。而 GIF文件还可以用 Alpha通道作图像的去背景处理。因此,我们可以利用 GIF文件的这一特性制作任意形状的图形。


    3 .专色通道




      为了让自己的印刷作品与众不同,往往要做一些特殊处理。如增加荧光油墨或夜光油墨,套版印制无色系(如烫金)等,这些特殊颜色的油墨(我们称其为“专色”)都无法用三原色油墨混合而成,这时就要用到专色通道与专色印刷了。


      在图像处理软件中,都存有完备的专色油墨列表。我们只须选择需要的专色油墨,就会生成与其相应的专色通道。但在处理时,专色通道与原色通道恰好相反,用黑色代表选取(即喷绘油墨),用白色代表不选取(不喷绘油墨)。这一点是需要特别注意的。


      专色印刷可以让作品在视觉效果上更具质感与震撼力,但由于大多数专色无法在显示器上呈现效果,所以其制作过程也带有相当大的经验成分。


    4 .蒙板与贴图混合通道




      蒙板又被称为“遮罩”,可以说是最能体现“遮板”意义的通道应用了。
      在一张图像(或一个图层)上添加一张黑白灰阶图,黑色部分的图像将被隐去(而不是删除),变为透明;白色部分将被完全显现;而灰阶部分将处于半透明状态。蒙板无论在图像合成还是在特效制作方面,都有不可取代的功用。蒙板也可以应用到三维模型的贴图上面。金属上的斑斑锈迹,玻璃上的贴花图案,这些形状不规则的图形,往往要用矩形贴图加蒙板的方式加以处理。这种类型的蒙板由于需要调整它们在三维表面的坐标位置,所以常常被视为一种特殊形式的贴图,称为“透明度贴图”。


      蒙板不仅可以在简单的贴图中使用,更可以在复杂得多维材质中使用。当两种材质在同一表面交错混合时,人们同样需要用通道来处理他们的分布。而与普通蒙板不同的是,这样的“混合通道”是直接应用在两张图像上的:黑色的部分显示 A 图像;白色部分显示 B 图像;灰阶部分则兼而有之。可见,混合通道是由蒙板概念衍生而来,用于控制两张图像叠盖关系的一种简化应用。


    5 .置换贴图与凹凸贴图




      在三维软件中,通道并不仅限于处理平面贴图,他也被用于表现更为复杂的材质,甚至用来建立模型。


      试想,我们要对一枚硬币建模:其表面纷繁复杂的图案与花纹一定会给我们的工作带来不少麻烦,用通常的建模手段,几乎无法完成。也许有人会问:我们能不能用一张平面图像来表示三维物体表面的凹凸起伏(就像一张海拔地图那样),而让计算机自动完成繁琐的建模工作呢?答案是:能,而且这张关键的平面图就是通道。


      将一张通道用所谓“置换贴图”的方式贴到物体的表面,这时,计算机就会如是运作:将贴图表面上的节点,按照贴图通道上像素的亮度信息,沿曲面在该点的法线方向进行不同程度的牵引拉伸,要么凹下去,要么凸起来:就像比对着一张用颜色描绘海拔的地图,在泥巴上捏出高山与峡谷一样。现在,我们只要用平面绘图工具绘制一张二维图像,然后将其转化为置换贴图并赋予物体,一枚极具质感的硬币就跃然纸上了。


      置换贴图虽然可以大大节省建模工作量,但由于这样生成的模型不够优化,多边形数目过于繁多,会造成渲染时间的大幅攀升。为此,人们想出一个折中的好办法。在不增加模型复杂度的前提下,使物体表面的凹凸效果近似于置换贴图中生成的真实模型,这就是凹凸贴图算法。凹凸贴图同样以通道为信息源,通过特殊的表面贴图与光影处理,表现出物体的高光与阴影,使其光影效果在大多数情况下能够达到令人信服的程度。


      现在,我们再使用凹凸通道贴图建立一枚硬币模型,并与前面的置换模型进行渲染比对。我们会发现:在“正视”所处理的平面(视线垂直于平面)时,后者与前者有着同样出色的表现,但渲染时间大大优于前者;而在“侧视”(视线垂直于该平面的法线)对比时,置换贴图依旧表现出物体表面真实的起伏形态,而用凹凸贴图处理的平面则平整如初。这也使凹凸贴图的缺点暴露无遗。以上两种算法各有优劣,而在最终决定究竟使用哪一种算法使通道与模型相结合,以达到所需效果时,视角便成为决定性的因素。


    6 .矢量通道




      为了减小数据量,人们将逐点描绘的数字图像再一次解析,运用复杂的计算方法将其上的点、线、面与颜色信息转化为简捷的数学公式;这种公式化的图形被称为“矢量图形”;而公式化的通道,则被称为“矢量通道”。矢量图形虽然能够成百上千倍地压缩图像信息量,但其计算方法过于复杂,转化效果也往往不尽人意。因此,他只有在表现轮廓简洁、色块鲜明的几何图形时才有用武之地;而在处理真实效果(如照片)时,则很少派上用场。Photoshop中的“路径”, 3DS中的几种预置贴图, illustrator、 flash 等矢量绘图软件中的蒙板,都是属于这一类型的通道。


      古人云:“勿在沙地筑高台”。想拥有过人的技术就必须努力学好基础知识。通道的应用是从事美工行业人员从入门到精通的必经之路,也是这门课程的华彩乐章。希望大家能够从这里一点一滴地学起,在不远的将来,让自己的作品散发出艺术耀眼的光芒。
    展开全文
  • 七彩色图片批量处理工具可以实现图片压缩,缩小图片尺寸,图片旋转,图片加文字或图片水印,调整亮度与对比度,图片去色,去除图片Exif信息(拍摄时间,相机型号信息),CMYK转RGB等,全部支持批量处理。支持处理的...
  • RSD的遥感图像合成工具

    千次阅读 2020-07-10 10:04:59
    如果将开发遥感数据处理平台比作盖一幢大楼,图像合成...该工具把成像的决定权一遭儿交给了用户,通过该工具用户可以自行设计使用成百上千的图像合成组合,图像效果自行负责,就不用总找我了。 一、图像合成的线性拉伸
  • 本文介绍了OpenCV图像通道拆分的两种方式,可以看到,OpenCV的split函数和numpy的矩阵索引两种拆分方式得到的结果数据是相同的,但numpy矩阵索引方式性能更好。因此图像通道的拆分非必要不执行,如果要执行,尽量...
  • OpenCV截取图像ROI并保存于指定路径

    千次阅读 2014-11-24 15:39:33
    近日研究工作要做个小工具,用于在大批图像中截自己感兴趣的区域。
  • 通道图像处理中的应用 —通道起源 如果问“什么是 photoshop 中最重要、最不可缺少的功能?”相信很多人的回答是“图层”。其实,在 photoshop3.0 之前,根本没有图层的功能。在图像处理中,最重要的功能是...
  • 颜色通道

    2014-11-25 20:21:46
    基本色通道(color channel),就是将构成整体图像的颜色信息整理并表现为单色图像工具。根据图像颜色模式的不同,颜色通道的种类也各异。例如,RGB color模式就是利用“Red,Green,Blue”3种基本色调来表现繁多的...
  • 转自:转自HighGUI工具:读取并显示各种类型的图像、视频。 include 加载图片的函数:C++:imread(const string& filename, int flags=1):加载图像到内存中 Python:cv2.imread(filenmae[, flags]) 参数: ...
  • pw的保存图片格式

    千次阅读 2014-03-07 17:29:49
    Photographic Experts Group(联合图像专家组)的缩写,文件后辍名为".jpg"或".jpeg",是最常用的图像文件格式,由一个软件开发联合会组织制定,是一种有损压缩格式,能够将图像压缩在很小的储存空间,图像中重复或...
  • TexturePacker非常棒的图像处理工具

    千次阅读 2013-12-09 17:18:18
    欢迎转载!转载时请注明出处:... 如果你还没接触到过这个工具,那你今天运气非常好了... ...说明:这款软件需要购买的,能够发一百多块买到这么好的工具还是挺值得,可以工具的价钱,肯定他带给的的好处远不
  • Photoshop通道图像处理中的应用 —通道起源 如果问“什么是 photops 中最重要、最不可缺少的功能?”相信很多人的回答是“图层”。... 为了记录选区范围,可以通过黑与白的形式将其保存
  • Capture One pro 21 for Mac一款RAW转换和图像编辑工具,新版本Capture One Pro 21 mac着重在图层、工作流程及处理性能三方面作出改进,带来了全新且高度灵敏的工具。Capture One Pro 21版将所有必备工具和高端性能...
  • 欢迎转载!转载时请注明出处:... 如果你还没接触到过这个工具,那你今天运气非常好了... ...说明:这款软件需要购买的,能够发一百多块买到这么好的工具还是挺值得,可以工具的价钱,肯定他带给的的
  • 上一篇文章我们讲了安装和配置,这节课我们还是了解几个最基本的操作,包括图像的读取、图像的显示、图像的修改、图像保存。 如果你已经有了解过OpenCV,那对这些概念可能比较清楚,如果你是一个小白,想入门学习...
  • 欢迎转载!转载时请注明出处:... 如果你还没接触到过这个工具,那你今天运气非常好了... ... 说明:这款软件需要购买的,能够发一百多块买到这么好的工具还是挺值得,可以工具的价钱,肯定他带给的的好处远不止这
  • openCV) javaCV开发详解之3:收流器实现,录制流媒体服务器的rtsp/rtmp视频文件(基于javaCV-FFMPEG) javaCV开发详解之4:转流器实现(也可作为本地收流器、推流器,新增添加图片及文字水印,视频图像保存),...
  • Python与机器视觉(三)图像保存

    千次阅读 2018-10-05 17:50:28
    其第一个参数为希望保存的路径及文件名,第二个参数为保存图像的变量,彩色图像时,其需要BGR的通道顺序。 2.如果希望保存进行通道变换后的图像 RGB 顺序,那么可以利用matplotlib的pyplot工具中 imsave() 函数来...
  • 本文是我最近学习tensorflow时,尝试着自己训练一个卷积神经网络,然后再去调用网络测试自己的图片的一次尝试,基于Mnist是最简单的一种方式,希望对刚入门的小伙伴有帮助
  • OpenCV图像读取(imread) 显示(imshow) 保存(imwrite)的冷知识点,虽然很基础,但也有用。 一、读取图像:imread() 与imreadmulti() 1. imread()函数第二个参数flags有很多选择,如下: //! Imread flags enum...
  • 本系列文章介绍深度学习框架Caffe及其实践,本文主要介绍Caffe的实用工具—— compute_image_mean 计算图像均值. 1. 图像预处理——零均值化 数据预处理在深度学习中非常重要,数据预处理中,标准的第一步是数据...
  • 有时候你得到的图片不是透明的png而是加了黑背景的图(可能是:.jpg,.gif,.png等格式的图) 例如一个粒子效果的图:   多好的粒子效果,可惜它有黑背景。不处理一下,不好用。 经过移除黑背景处理为png后,...
  • 这是我们真正需要了解的通道,可以说我们在photoshop中制作出的各种特殊效果都离不开Alpha通道,它最基本的用处在于保存选取范围,并不会影响图象的显示和印刷效果。当图象输出到视频,Alpha通道也可以用来决定显示...
  • 使用步骤 1.安装labelme,使用 pip install labelme 命令即可。...文件中包含两个测试样例,image1和image2,分别是单通道的遥感水体图像,分辨率为79317301和一个从网上下载的RGB水体图像,分辨率为500333.
  • Alpha通道

    2019-02-16 14:54:00
    Alpha通道是计算机图形学中的术语,指的是特别的通道,意思是“非彩色”通道,主要是用来保存选区和编辑选区。真正让图片变透明的不是Alpha 实际是Alpha所代表的数值和其他数值做了一次运算 为什么用‘Alpha’代表...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,341
精华内容 7,736
关键字:

保存单通道图像工具