精华内容
下载资源
问答
  • 前几天收拾书架,翻到了几年前上软件课的笔记,其中有一页潦草记了把彩图转黑白的12种方法。没错,就是辣么多!一张彩图转为黑白很简单,为什么还要用这么多种方法因为不同的操作,转出来的图片区别是很大的,有的...

    前几天收拾书架,翻到了几年前上软件课的笔记,其中有一页潦草记了把彩图转成黑白的12种方法。没错,就是辣么多!

    一张彩图转为黑白很简单,为什么还要用这么多种方法

    因为不同的操作,转出来的图片区别是很大的,有的明暗趋同,有的反差太大。

    其实写这篇文章有两个目的:

    一是通过12种彩转黑的操作,对ps的各项工具有个更深的理解;

    二是以防笔记破旧丢失,写成电子文档上传云端保险。

    来呲购!

    首先需要一张明暗对比拉得开的图,最好有多种颜色。在bing上检索“阳光”,选出下面这张图。

    去色

    图像—调整—去色

    去色跟明度无关,跟饱和度有关。当不同的颜色处于同一饱和度的时候,它们去色后是一样的。不建议使用

    灰度

    图像—模式—灰度

    和上张去色相比,色彩层次上明显拉得开了。灰度能在很大程度上保留细节。

    但是图片模式为灰度后,就不能在图片上添加彩色了。

    计算

    图像—计算

    通道灰+灰,模式用正常。得到一个灰色通道

    在新的通道Alpha1中全选、复制之后,再新建一个图层中粘贴,就把通道拿到了图层中,得到黑白图。效果不错哦!  和灰度是一样的。

    黑白

    图像—调整—黑白

    执行黑白命令后会出现一个框,有六种颜色,可以单独调节某一颜色的明度,更好的人为控制画面颜色明暗。

    渐变映射

    工具栏中的前景色设为黑,背景色设为白

    图像—调整—渐变映射

    画面对比强烈,但是会损失中间层次的过渡。如果彩图中没有纯黑或纯白的地方,渐变映射把图中相对最暗处替换为纯黑,相对最亮处替换为纯白。

    知道渐变映射的原理后,我们可以把前景色、背景色换成其他颜色试试。

    色相饱和度

    图像—调整—色相饱和度

    把图片的饱和度减到-100,得到黑白照片。

    通道

    在RGB通道中按住ctrl得到选区。

    RGB通道也有明暗,相当于把图层上亮的部分选出来。

    得到选区后新建一层填充白色,在这层下面取消选区后铺一个黑色的底色。相当于在黑色的背景上填充白色的选区。

    这个方法得到的黑白图质量不高,但是利用通道来划分选区是个很有用的办法。

    定义画笔

    编辑—定义画笔

    定义一个画笔 在新建白色图层,用黑色去画。

    当然也可以用其他各种颜色

    定义画笔是把画面上亮的部分定义成画笔,用的就是RGB通道的明亮度,所以它和通道的原理是一模一样的。

    lab模式

    Lab模式下的通道中有明度、a通道、b通道,a通道是绿到红,b通道是黄到蓝。

    把把a、b通都关掉,只保留明度通道,得到黑白图。

    照片滤镜

    图像—调整—照片滤镜

    滤镜改为黑色,并且浓度调为100。它很好的保留了画面原来的明度。

    当然我们也可以试试其他的颜色。

    或者其他的浓度。

    照片滤镜,其实就相当于带着一副有色眼镜,想要什么颜色的图就带什么色的眼镜,觉得颜色太重,还可以调节镜片的色彩浓度

    什么泛黄的老照片、泛绿的老照片、泛各种颜色的都不在话下。

    海绵工具

    用海绵工具涂抹,自然饱和度不要勾选哦。

    海绵工具涂抹画布虽然麻烦一些,但是几乎没有损失掉色阶层次。建议有闲人士一试。

    图层混合模式

    新建一个无色相的层,黑白灰都可以。

    把图层的混合模式改为颜色。得到黑白图

    照片滤镜、海绵工具、图层混合模式,这三个是相同的原理

    它们只改变颜色,不改变画面的明度。

    以上就是彩图转黑白的12种方法,通过它们更好的了解PS吧。

    展开全文
  • private void ColorBMPToOne(String filename,String toFilename) { FileInfo file = new FileInfo(filename); if (file.Exists) { FileStream fs = file.OpenRead(); 

       private void  ColorBMPToOne(String filename,String toFilename) {
             FileInfo file = new FileInfo(filename);

             if (file.Exists)
             {
                 FileStream fs = file.OpenRead();
                 byte[] bmphead = new byte[54];
                 fs.Read(bmphead, 0, 54);
                 if (bmphead[0].ToString().Equals("66") && bmphead[1].ToString().Equals("77"))
                 {

                     int bmpwidth = int.Parse(bmphead[18].ToString()) + int.Parse(bmphead[19].ToString()) * 256 + int.Parse(bmphead[20].ToString()) * 256 * 256 + int.Parse(bmphead[21].ToString()) * 256 * 256 * 256;
                     int bmpheight = int.Parse(bmphead[22].ToString()) + int.Parse(bmphead[23].ToString()) * 256 + int.Parse(bmphead[24].ToString()) * 256 * 256 + int.Parse(bmphead[25].ToString()) * 256 * 256 * 256; ;
                     int bit = int.Parse(bmphead[28].ToString());

                     if ((bit == 24) || (bit == 32))
                     {
                     }
                     else {
                         MessageBox.Show("请确定图位数为24或者32位图");
                         return;
                    
                     }

                     int bblength = bmpwidth * 3;
                     int bbend = 0;
                     if ((bmpwidth*3 % 4) > 0)
                     {

                         bbend=4 - ((bmpwidth * 3) % 4);
                         bblength = bmpwidth * 3 + bbend;
                        
                     }


                     int newbmpwidth = 0;

                     if((bmpwidth%32)>0){

                         newbmpwidth = ((32 - bmpwidth % 32) + bmpwidth) / 8;
                    
                     }else{

                         newbmpwidth = bmpwidth / 8;
                     }


                    
                     int bmpsize = newbmpwidth * bmpheight;

     

                     //图片所占的大小(算上数据头62位的)
                     int bmprelsize = bmpsize + 54 + 8; //54是bmp表头数据.8位是颜色表,分别为00,00,00,00,ff,ff,ff,00
                     byte[] bmpbit = new byte[bmprelsize + newbmpwidth];
                     Array.Copy(bmphead, bmpbit, 54);

                     #region 写表头的数据
                     bmpbit[10] = 0x3e;
                     bmpbit[28] = 0x01;
                     bmpbit[54] = 0x00;
                     bmpbit[55] = 0x00;
                     bmpbit[56] = 0x00;
                     bmpbit[57] = 0x00;
                     bmpbit[58] = 0xff;
                     bmpbit[59] = 0xff;
                     bmpbit[60] = 0xff;
                     bmpbit[61] = 0x00;

                     //图所占的空间大小,这个不包括图头的
                     String bmpsizeString = String.Format("{0:x2}", bmpsize);
                     String bmpresizeString = String.Format("{0:x2}", bmprelsize);
                     bmpsizeString = bmpsizeString.PadLeft(8, '0');
                     bmpresizeString = bmpresizeString.PadLeft(8, '0');

                     Char[] chsize = bmpsizeString.ToCharArray();
                     Char[] chresize = bmpresizeString.ToCharArray();

     

                     for (int i = 0; i < 8; i = i + 2)
                     {
                         bmpbit[37 - (i / 2)] = (byte)(Uri.FromHex(chsize[i]) * 16 + Uri.FromHex(chsize[i + 1]));
                         bmpbit[5 - (i / 2)] = (byte)(Uri.FromHex(chresize[i]) * 16 + Uri.FromHex(chresize[i + 1]));
                     }
                     #endregion

     

                     MessageBox.Show(bmpwidth.ToString() + "@@@" + bmpheight.ToString() + "@@@" + newbmpwidth.ToString() + "@@@" + bmprelsize.ToString() + "@@@" + fs.Length+"@@"+bblength.ToString());


                     #region


                     byte[] bbrec = new byte[bblength];
                     byte[] bb = new byte[bmpwidth*3];
                     int[] ch = new int[8];
                     int[] chend = new int[8];
                     int count = 0;
                     int count2 = 0;
                     int count3 = 0;
               
                     char[] cc = new char[2];
                     int bmpheightcount = 0;
                     int bmpendcount = 0;

                     while (fs.Read(bbrec, 0, bblength) > 0)
                     {
                         Array.Copy(bbrec, 0, bb, 0, bmpwidth * 3);
                        

                     
                      
                         for (int k = 0; k < bb.Length-23 ; k = k + 24)
                         {
                             bmpendcount = k/24;
                             for (int j = 0; j < 8; j++)
                             {
                                 count = k + j * 3;
                                 if ((bb[count].ToString().Equals("255")) && (bb[count + 1].ToString().Equals("255")) && (bb[count + 2].ToString().Equals("255")))
                                 {
                                     ch[j] = 1;
                                 }
                                 else
                                 {
                                     ch[j] = 0;
                                 }
                             }
                             count2 = ch[0] * 8 + ch[1] * 4 + ch[2] * 2 + ch[3];
                             count3 = ch[4] * 8 + ch[5] * 4 + ch[6] * 2 + ch[7];
                             cc[1] = Convert.ToChar(count3.ToString("x"));
                             cc[0] = Convert.ToChar(count2.ToString("x"));
                             int rewrite = k / 24 + newbmpwidth * bmpheightcount + 62;
                             bmpbit[rewrite] = (byte)(Uri.FromHex(cc[0]) * 16 + Uri.FromHex(cc[1]));
                         }
                        
                  
                       
                         #region
                         int m = bb.Length% 24;
                         ch = new int[8];
                         for (int i = 0; i < ch.Length; i++)
                         {
                             ch[i] = 1;
                         }
                             if (m > 0)
                             {
                                 bmpendcount = bmpendcount + 1;
                                 for (int i = 0; i < m; i = i + 3)
                                 {
                                     int j = bb.Length - m + i;

                                     if ((bb[j].ToString().Equals("255")) && (bb[j + 1].ToString().Equals("255")) && (bb[j + 2].ToString().Equals("255")))
                                     {
                                         ch[i / 3] = 1;
                                     }
                                     else
                                     {

                                         ch[i / 3] = 0;
                                     }
                                 }
                                 count2 = ch[0] * 8 + ch[1] * 4 + ch[2] * 2 + ch[3];
                                 count3 = ch[4] * 8 + ch[5] * 4 + ch[6] * 2 + ch[7];
                                 cc[1] = Convert.ToChar(count3.ToString("x"));
                                 cc[0] = Convert.ToChar(count2.ToString("x"));
                                 bmpbit[bmpendcount + newbmpwidth * bmpheightcount + 62] = (byte)(Uri.FromHex(cc[0]) * 16 + Uri.FromHex(cc[1]));
                             }
                         #endregion
                        
                         for (int i = bmpendcount+1; i < newbmpwidth;i++ ) {
                             bmpbit[i + newbmpwidth * bmpheightcount + 62] = (byte)Convert.ToInt16(255);
                        
                         }

                         for (int i = bmpbit.Length; i > (bmpbit.Length - newbmpwidth);i--)
                         {
                             bmpbit[i-1] = (byte)Convert.ToInt16(255);
                         }
                         bmpheightcount = bmpheightcount + 1;
                         bb = new byte[bmpwidth * 3];

                     }
                     MessageBox.Show(bmpheightcount.ToString());
                     FileStream fwrite = new FileStream(toFilename, FileMode.Create);
                     fwrite.Write(bmpbit, 0, bmpbit.Length);
                     fwrite.Close();
                     fs.Close();
                     #endregion
                 }
                 else {
                     MessageBox.Show("非BMP格式的数据");
                 }
             }
             else {
                 MessageBox.Show("文件路径不对,请确定文件路径");
             }
            }

     

    因为打印机的显示与微软的显示不一样,所以要转的时候要填充后面的补的字节,不然在打印的时候会有一条黑线

    展开全文
  • python 转换彩图黑白图 ,去噪

    万次阅读 2014-08-08 13:29:40
    原图:

    原图:

    转换成:


    python代码

    # -*- coding: utf-8 -*-
    
    import os
    from PIL import *
    
    curdir="E:\\py\\WinPython-32bit-2.7.6.4\\study"
    
    os.chdir(curdir)
    
    
    def RGB2BlackWhite(filename):
        im=Image.open(filename)
        print "image info,",im.format,im.mode,im.size
        (w,h)=im.size
        R=0
        G=0
        B=0
    
        for x in xrange(w):
            for y in xrange(h):
                pos=(x,y)
                rgb=im.getpixel( pos )
                (r,g,b)=rgb
                R=R+r
                G=G+g
                B=B+b
    
        rate1=R*1000/(R+G+B)
        rate2=G*1000/(R+G+B)
        rate3=B*1000/(R+G+B)
        
        print "rate:",rate1,rate2,rate3
    
        
        for x in xrange(w):
            for y in xrange(h):
                pos=(x,y)
                rgb=im.getpixel( pos )
                (r,g,b)=rgb
                n= r*rate1/1000 + g*rate2/1000 + b*rate3/1000
                #print "n:",n
                if n>=60:
                    im.putpixel( pos,(255,255,255))
                else:
                    im.putpixel( pos,(0,0,0))
                    
        im.save("blackwhite.bmp")                
          
    def saveAsBmp(fname):    
        pos1=fname.rfind('.')
        fname1=fname[0:pos1]
        fname1=fname1+'_2.bmp'
        im = Image.open(fname)
        new_im = Image.new("RGB", im.size)
        new_im.paste(im)
        new_im.save(fname1)          
        return fname1          
                    
    if __name__=="__main__":
        filename=saveAsBmp("2ujb.bmp")
        RGB2BlackWhite(filename)
        
                


    展开全文
  • 一开始我在网上找了一个转黑白图片的方法,这个方法的逻辑是 用127做临界值,来判断灰度图的灰度是否比他大,大就打白,小就打黑,代码和效果图如下/*** 转为二值图像** @param bmp 原图bitmap** @return*/private ...

    最近有一个需求,需要在手机上生成黑白图传给蓝牙设备显示出来。

    一开始我在网上找了一个转黑白图片的方法,这个方法的逻辑是 用127做临界值,来判断灰度图的灰度是否比他大,大就打白,小就打黑,代码和效果图如下

    /**

    * 转为二值图像

    *

    * @param bmp 原图bitmap

    *

    * @return

    */

    private fun convertToBMW(bmp: Bitmap, tmp:Int=130): Bitmap {

    val width = bmp.width // 获取位图的宽

    val height = bmp.height // 获取位图的高

    val pixels = IntArray(width * height) // 通过位图的大小创建像素点数组

    // 设定二值化的域值,默认值为100

    //tmp = 180;

    bmp.getPixels(pixels, 0, width, 0, 0, width, height)

    var alpha = 0xFF shl 24

    for (i in 0 until height) {

    for (j in 0 until width) {

    val grey = pixels[width * i + j]

    // 分离三原色

    alpha = grey and -0x1000000 shr 24

    var red = grey and 0x00FF0000 shr 16

    var green = grey and 0x0000FF00 shr 8

    var blue = grey and 0x000000FF

    if (red > tmp) {

    red = 255

    } else {

    red = 0

    }

    if (blue > tmp) {

    blue = 255

    } else {

    blue = 0

    }

    if (green > tmp) {

    green = 255

    } else {

    green = 0

    }

    pixels[width * i + j] = (alpha shl 24 or (red shl 16) or (green shl 8)

    or blue)

    if (pixels[width * i + j] == -1) {

    pixels[width * i + j] = -1

    } else {

    pixels[width * i + j] = -16777216

    }

    }

    }

    // 新建图片

    val newBmp = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)

    // 设置图片数据

    newBmp.setPixels(pixels, 0, width, 0, 0, width, height)

    val bitmap = ThumbnailUtils.extractThumbnail(newBmp, width, height)

    imageView5.setImageBitmap(bitmap)

    return bitmap

    }

    947e047b1369

    黑白效果图

    这种方式有一个问题,要么一大片白色要么一大片黑色,效果不是很理想。如果打印出来根本认不出来这是谁。

    后面了解到Floyd-Steinberg算法,它是利用误差的扩散算法的Floyd-Steinberg抖动算法来对图像进行二值化处理。

    例如,灰度如的灰度值为g,误差值为e。遍历每个像素值,灰度如果大于m(127,或者像素灰度平均值,看你喜欢),那么pixels【i】=#ffffffff,打白,e=g-255;否则,打黑,pixels【i】=#ff000000,e=g;然后,这个像素点的右边,下边,和右下方的像素点,对应的加上3e/8,3e/8,e/4。最后你的到的像素数组在转成bitmap,就是抖动的单色图了。效果图如下

    //抖动算法来对图像进行二值化处理

    private fun convertGreyImgByFloyd(img: Bitmap): Bitmap {

    val width = img.width //获取位图的宽

    val height = img.height //获取位图的高

    val pixels = IntArray(width * height) //通过位图的大小创建像素点数组

    img.getPixels(pixels, 0, width, 0, 0, width, height)

    val gray = IntArray(height * width)

    for (i in 0 until height) {

    for (j in 0 until width) {

    val grey = pixels[width * i + j]

    val red = grey and 0x00FF0000 shr 16

    gray[width * i + j] = red

    }

    }

    var e = 0

    for (i in 0 until height) {

    for (j in 0 until width) {

    val g = gray[width * i + j]

    if (g >= 128) {

    pixels[width * i + j] = -0x1

    e = g - 255

    } else {

    pixels[width * i + j] = -0x1000000

    e = g - 0

    }

    if (j < width - 1 && i < height - 1) {

    //右边像素处理

    gray[width * i + j + 1] += 3 * e / 8

    //下

    gray[width * (i + 1) + j] += 3 * e / 8

    //右下

    gray[width * (i + 1) + j + 1] += e / 4

    } else if (j == width - 1 && i < height - 1) {//靠右或靠下边的像素的情况

    //下方像素处理

    gray[width * (i + 1) + j] += 3 * e / 8

    } else if (j < width - 1 && i == height - 1) {

    //右边像素处理

    gray[width * i + j + 1] += e / 4

    }

    }

    }

    val mBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565)

    mBitmap.setPixels(pixels, 0, width, 0, 0, width, height)

    imageView5.setImageBitmap(mBitmap)

    saveBmp(mBitmap)

    return mBitmap

    }

    947e047b1369

    效果图

    现在的效果达到了要求,后面可以把它转成单色图,通过传每一个像素给蓝牙设备显示出来。

    转成bmp图片,保存到手机

    /**

    * 将Bitmap存为 .bmp格式图片

    * @param bitmap

    */

    private fun saveBmp(bitmap: Bitmap?) {

    if (bitmap == null)

    return

    // 位图大小

    val nBmpWidth = bitmap.width

    val nBmpHeight = bitmap.height

    // 图像数据大小

    val bufferSize = nBmpHeight * (nBmpWidth * 3 + nBmpWidth % 4)

    try {

    // 存储文件名

    val filename = "/sdcard/test${Random.nextInt(1000)}.bmp"

    val file = File(filename)

    if (!file.exists()) {

    file.createNewFile()

    }

    val fileos = FileOutputStream(filename)

    // bmp文件头

    val bfType = 0x4d42

    val bfSize = (14 + 40 + bufferSize).toLong()

    val bfReserved1 = 0

    val bfReserved2 = 0

    val bfOffBits = (14 + 40).toLong()

    // 保存bmp文件头

    writeWord(fileos, bfType)

    writeDword(fileos, bfSize)

    writeWord(fileos, bfReserved1)

    writeWord(fileos, bfReserved2)

    writeDword(fileos, bfOffBits)

    // bmp信息头

    val biSize = 40L

    val biWidth = nBmpWidth.toLong()

    val biHeight = nBmpHeight.toLong()

    val biPlanes = 1

    val biBitCount = 24

    val biCompression = 0L

    val biSizeImage = 0L

    val biXpelsPerMeter = 0L

    val biYPelsPerMeter = 0L

    val biClrUsed = 0L

    val biClrImportant = 0L

    // 保存bmp信息头

    writeDword(fileos, biSize)

    writeLong(fileos, biWidth)

    writeLong(fileos, biHeight)

    writeWord(fileos, biPlanes)

    writeWord(fileos, biBitCount)

    writeDword(fileos, biCompression)

    writeDword(fileos, biSizeImage)

    writeLong(fileos, biXpelsPerMeter)

    writeLong(fileos, biYPelsPerMeter)

    writeDword(fileos, biClrUsed)

    writeDword(fileos, biClrImportant)

    // 像素扫描

    val bmpData = ByteArray(bufferSize)

    val wWidth = nBmpWidth * 3 + nBmpWidth % 4

    var nCol = 0

    var nRealCol = nBmpHeight - 1

    while (nCol < nBmpHeight) {

    run {

    var wRow = 0

    var wByteIdex = 0

    while (wRow < nBmpWidth) {

    val clr = bitmap.getPixel(wRow, nCol)

    bmpData[nRealCol * wWidth + wByteIdex] = Color.blue(clr).toByte()

    bmpData[nRealCol * wWidth + wByteIdex + 1] = Color.green(clr).toByte()

    bmpData[nRealCol * wWidth + wByteIdex + 2] = Color.red(clr).toByte()

    wRow++

    wByteIdex += 3

    }

    }

    ++nCol

    --nRealCol

    }

    fileos.write(bmpData)

    fileos.flush()

    fileos.close()

    } catch (e: FileNotFoundException) {

    e.printStackTrace()

    } catch (e: IOException) {

    e.printStackTrace()

    }

    }

    @Throws(IOException::class)

    protected fun writeWord(stream: FileOutputStream, value: Int) {

    val b = ByteArray(2)

    b[0] = (value and 0xff).toByte()

    b[1] = (value shr 8 and 0xff).toByte()

    stream.write(b)

    }

    @Throws(IOException::class)

    protected fun writeDword(stream: FileOutputStream, value: Long) {

    val b = ByteArray(4)

    b[0] = (value and 0xff).toByte()

    b[1] = (value shr 8 and 0xff).toByte()

    b[2] = (value shr 16 and 0xff).toByte()

    b[3] = (value shr 24 and 0xff).toByte()

    stream.write(b)

    }

    @Throws(IOException::class)

    protected fun writeLong(stream: FileOutputStream, value: Long) {

    val b = ByteArray(4)

    b[0] = (value and 0xff).toByte()

    b[1] = (value shr 8 and 0xff).toByte()

    b[2] = (value shr 16 and 0xff).toByte()

    b[3] = (value shr 24 and 0xff).toByte()

    stream.write(b)

    }

    End!

    展开全文
  • 不要在意性别。! Google并且自己尝试了一晚上都不知道怎么搞 求助。!!
  • 作者:曼哈顿印象微博:曼哈顿印象PHOTO 视频教程视频教程​www.bilibili.com哈喽,大家好,我是小曼(曼哈顿印象),今天给大家带来一期照片转黑白的教程,利用PS快速修出高质量的黑白照片。我们来看看对比图:第1...
  • 黑白,运用到极致,便是另一种高级感。就像很多人说的,黑白色的纯粹世界,安静的像一部老电影。尽管在绝大多数人的印象里,所谓的黑白摄影就是简简单单的将拍好的彩照饱和度降低为零,但是真正的黑白摄影却永远不会...
  • coreldraw把彩图快速变黑白图 huangshengqing 来自地理爱好者 我们常常会遇到这样的问题想把某幅彩图变为黑白图例如我想把下图世界所平均气温的分布图来自七年级上册天气与气候转变成黑白图以便于做学案或者出一些...
  • } /** * 将彩色图转换为黑白图 * * @param 位图 * @return 返回转换好的位图 */ public static Bitmap convertToBlackWhite(Bitmap bmp) { int width = bmp.getWidth(); // 获取位图的宽 int ...
  • 阅读本文之前关于将RGB颜色值转换为灰阶值的计算方法可参见:灰阶显示图片的典型应用就是用户头像,如用户在线头像显示彩色(原图),不在线显示灰色(黑白图)。总结一点就是更加一张原始图片来通过颜色的过滤处理计算...
  • } /** * 将彩色图转换为黑白图 * * @param 位图 * @return 返回转换好的位图 */ public static Bitmap convertToBlackWhite(Bitmap bmp) { int width = bmp.getWidth(); // 获取位图的宽 int height = bmp....
  • 本帖最后由 西双版纳 于 2009-7-16 14:06 编辑 (原创)如何制作反差和明度值都与原彩图一样的黑白片 (2009-7-16) 将彩色图转为黑白片,方法有很多。但是,在转变的过程中,如果要将原来的彩色图片的反差、明度值...
  • 首先解释下所谓的黑白图片。其实更准确地应该叫256级灰度图。当一个颜色点的R=G=B时,就是我们所谓的“灰色”。由于RGB的取值范围在[0,255],所以一共只有256种可能。 所以彩色图片转为黑白图片的原理非常简单。...
  • java识别照片是彩色还是黑白

    千次阅读 2018-09-29 15:21:05
    彩图的颜色就是通过rgb值的差异进行体现的,rgb不等值的情况,只说明这不是完全的灰度图, 或者叫做彩色饱和度不高的彩图,只是肉眼分辨不出来。 为此,要将rgb模式转换为hsb模式再去判断,其中:h色相,s饱和度,b...
  • Android修改图片颜色-成灰度图

    千次阅读 2017-03-03 10:57:33
    项目中的一个需求,优惠券页面,过期的优惠券需要显示成黑白图片,灰度图,后台不给配黑白图片,只能在客户端处理了,先看效果图: 图片加载我用的是Glide,稍后我会贴出如何结合Glide来成灰度图,下面是工具类...
  • Android提高十六篇之使用NDK把彩图转换灰度图:blog.csdn.net/hellogv/article/details/6094127 从RGB色转为灰度色算法:www.cnblogs.com/NIOS/archive/2009/08/25/1553653.html 2. 二值变换:就是指将灰度图...
  • DeepNude2.0 windows

    2020-05-29 10:08:56
    DeepNude软件主要使用Image Inpainting for Irregular Holes Using Partial Convolutions 中提出的Image-to-Image技术,该技术有很多其它的应用,比如把黑白的简笔画转换成色彩丰富的彩图,你可以点击下方的链接在...
  • ***补充 1. 参考文献格式:作者的名字格式统一 eg:Famliy T. 2. 插图格式eps。用visio作图,选择空白流程图,另存为JPEG(有损压缩)或者可移植图像(png)。...-c彩图,-g黑白 3. 在latex公式之中或者...
  • 图片上位机一、思路二、STM32采集数据发送2.1、OV7725模组2.2、串口发送三、上位机接收,解析,显示保存2.1、接收解析2.2、数据格式...发送内容:黑白,二值,彩图 三、上位机接收,解析,显示保存 2.1、接收解析 2...
  • 今天小编跟大家一起分享科研工作...它可以制作完全“三维”彩图,使用最新的系统软件,或者在出版物上,它可以使简单的图式黑白图画在小范围内复制——或者几乎任何这些极端情况之间。2Hyperchem软件介绍:Hyperchem...
  • 它可以制作完全“三维”彩图,使用最新的系统软件,或者在出版物上,它可以使简单的图式黑白图画在小范围内复制——或者几乎任何这些极端情况之间。2Hyperchem软件介绍:Hyperchem是一款以高质量、灵活、易操作而...
  • 它可以制作完全“三维”彩图,使用最新的系统软件,或者在出版物上,它可以使简单的图式黑白图画在小范围内复制——或者几乎任何这些极端情况之间。2Hyperchem软件介绍:Hyperchem是一款以高质量、灵活、易操作而...
  • 它可以制作完全“三维”彩图,使用最新的系统软件,或者在出版物上,它可以使简单的图式黑白图画在小范围内复制——或者几乎任何这些极端情况之间。2Hyperchem软件介绍:Hyperchem是一款以高质量、灵活、易操作而...

空空如也

空空如也

1 2
收藏数 24
精华内容 9
关键字:

彩图转黑白