精华内容
下载资源
问答
  • 面对一张色彩绚丽的图片,你很像知道某一块的颜色是什么,这包括色彩的名字和这一点上色彩的RGB值,但在缺少专业工具的情况下,这似乎是一个难以完成的任务,但python可以为我们提供这样的功能,解决pandas, cv2库...

    c75dfa3be7ae958b34dcc6c182c5013e.png

    面对一张色彩绚丽的图片,你很像知道某一块的颜色是什么,这包括色彩的名字和这一点上色彩的RGB值,但在缺少专业工具的情况下,这似乎是一个难以完成的任务,但python可以为我们提供这样的功能,解决pandas, cv2库,我们可以实现这样的功能,最终的效果如下图所示

    9f7631cba68aac4f085cc02a32b7dce7.png

    鼠标双击在红色区域,图片上方则显示出这个区域的颜色信息。那么,该如何实现这样有趣的功能呢?通过本文,你将会学习到cv2库的一般使用方法,例如显示图片,处理鼠标双击事件,在图片上添加文字。

    1. 安装必要的python库

    pip install opencv-python numpy pandas

    opencv是一个强大的图像处理和计算机视觉库, pandas是一种基于numpy的工具,在数据分析方面非常受欢迎,实现图片颜色检测的功能,必须用到这三个库

    2. 通过点击获得像素信息

    程序需要将图片显示出来,鼠标双击后,程序获得鼠标点击的位置,通过这个位置,获取这个点的像素色彩信息,也就是RGB值。

    import cv2
    
    img = cv2.imread('colorpic.jpg')
    
    
    def click_info(event, x, y, flags, param):
        # 只处理双击事件
        if event == cv2.EVENT_LBUTTONDBLCLK:
            print('坐标', x, y)
            b, g, r = img[y, x]     # 获取b, g, r
            print("像素点的bgr值", b, g, r)
    
    cv2.namedWindow('image')
    cv2.setMouseCallback('image',  click_info)
    
    while True:
        cv2.imshow("image", img)
        # 点击 esc键
        if cv2.waitKey(20) & 0xFF ==27:
            break
    
    cv2.destroyAllWindows()

    执行程序,双击图片上的某一点,就可以获得鼠标所点击区域的x,y值

    3. 在图片上显示文字

    为了在图片上显示文字,先使用rectangle方法绘制出一个矩形区域,需要指定矩形的左上角和右下角的x,y 值,并指定色彩,下面的示例中,色彩我选择了(0, 0, 0) 黑色。putText方法用于显示文字,指定文字开始的x, y坐标

    import cv2
    
    img = cv2.imread('colorpic.jpg')
    cv2.rectangle(img, (20, 20), (750, 60), (0,0,0), -1)
    cv2.putText(img, 'this is a picture', (50,50), 2, 0.8, (255,255,255), 2, cv2.LINE_AA)
    
    while True:
        cv2.imshow("image", img)
        # 点击 esc键
        if cv2.waitKey(20) & 0xFF ==27:
            break
    
    cv2.destroyAllWindows()

    4. 根据RGB值计算色彩名称

    RGB色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是运用最广的颜色系统之一。前面已经讲解如何获得像素点的RGB, 那么如何通过这三个值判断它属于哪种颜色呢?

    首先,需要一份颜色信息表,记录色彩的名称和RGB值,这些信息记录在一份csv文件中,格式如下

    air_force_blue_raf,"Air Force Blue (Raf)",#5d8aa8,93,138,168
    air_force_blue_usaf,"Air Force Blue (Usaf)",#00308f,0,48,143
    air_superiority_blue,"Air Superiority Blue",#72a0c1,114,160,193

    第二列是色彩名称,后散列是RGB值,使用pandas将数据读取到dataframe中,获得一个像素点后,计算遍历dataframe中的所有数据,找到r, g, b差值最小的那一个就可以任务是该颜色

    import pandas as pd
    
    index = ["color", "color_name", "hex", "R", "G", "B"]
    csv_df = pd.read_csv('colors.csv', names=index, header=None)
    
    
    def get_color_name(r, g, b):
        min_diff = 10000
        color_name = ''
        for i in range(len(csv_df)):
            d = abs(r- int(csv_df.loc[i,"R"])) + abs(g- int(csv_df.loc[i,"G"]))+ abs(b- int(csv_df.loc[i,"B"]))
            if d <= min_diff:
                min_diff = d
                color_name = csv_df.loc[i,"color_name"]
        return color_name

    函数get_color_name根据r, g, b的值来确定色彩名称

    5.全部代码

    import pandas as pd
    import cv2
    
    
    def get_color_name(r, g, b):
        min_diff = 10000
        color_name = ''
        for i in range(len(csv_df)):
            d = abs(r - int(csv_df.loc[i, "R"])) + abs(g - int(csv_df.loc[i, "G"]))+ abs(b - int(csv_df.loc[i, "B"]))
            if d <= min_diff:
                min_diff = d
                color_name = csv_df.loc[i,"color_name"]
        return color_name
    
    
    def click_info(event, x, y, flags, param):
        # 只处理双击事件
        if event == cv2.EVENT_LBUTTONDBLCLK:
            global b,g,r,xpos,ypos, clicked
            xpos = x
            ypos = y
            b, g, r = img[y, x]     # 获取b, g, r
            b = int(b)
            g = int(g)
            r = int(r)
            clicked = True
    
    r = g = b = xpos = ypos = 0
    clicked = False
    img = cv2.imread('colorpic.jpg')
    index = ["color", "color_name", "hex", "R", "G", "B"]
    csv_df = pd.read_csv('colors.csv', names=index, header=None)
    
    cv2.namedWindow('image')
    cv2.setMouseCallback('image',  click_info)
    
    while True:
        cv2.imshow("image", img)
        if clicked:
            # 绘制显示文字的区域
            cv2.rectangle(img, (20, 20), (750, 60), (b, g, r), -1)
            text = get_color_name(r, g, b) + ' R='+ str(r) +  ' G='+ str(g) + ' B='+ str(b)
            # 显示文字内容
            cv2.putText(img, text, (50, 50), 2, 0.8, (255, 255, 255), 2, cv2.LINE_AA)
    
            # 如果像素点的颜色太偏向于白色,就用黑色来显示文字
            if(r + g + b >= 600):
                cv2.putText(img, text, (50, 50), 2, 0.8, (0, 0, 0), 2, cv2.LINE_AA)
    
        clicked=False
        # 点击 esc键
        if cv2.waitKey(20) & 0xFF ==27:
            break
    
    cv2.destroyAllWindows()

    6. 获取源码及数据

    想要获取程序所用图片及colors.csv文件,扫描关注微信公众号并回复 色彩 ,即可获得图片与文件,包括源码

    8a4150d6f5db799e535ec2fe437970b6.png
    展开全文
  • 帮你搜了一段网上流行的代码:灰度变换下面程序使用三种方法对一个彩色图像进行灰度变换,变换效果都不一样。...java核心包也有一种算法,但是没有看源代码,不知道具体算法是什么样,效果和上述不同。/* Gr...

    46599882917dd4c5b3e11ce662c6272c.png

    帮你搜了一段网上流行的代码:

    灰度变换

    下面的程序使用三种方法对一个彩色图像进行灰度变换,变换的效果都不一样。一般而言,灰度变换的算法是将象素的三个颜色分量使用R*0.3+G*0.59+B*0.11得到灰度值,然后将之赋值给红绿蓝,这样颜色取得的效果就是灰度的。另一种就是取红绿蓝三色中的最大值作为灰度值。java核心包也有一种算法,但是没有看源代码,不知道具体算法是什么样的,效果和上述不同。

    /* GrayFilter.java*/

    /*@author:cherami */

    /*email:cherami@163.net*/

    import java.awt.image.*;

    public class GrayFilter extends RGBImageFilter {

    int modelStyle;

    public GrayFilter() {

    modelStyle=GrayModel.CS_MAX;

    canFilterIndexColorModel=true;

    }

    public GrayFilter(int style) {

    modelStyle=style;

    canFilterIndexColorModel=true;

    }

    public void setColorModel(ColorModel cm) {

    if (modelStyle==GrayModel

    else if (modelStyle==GrayModel

    }

    public int filterRGB(int x,int y,int pixel) {

    return pixel;

    }

    }

    /* GrayModel.java*/

    /*@author:cherami */

    /*email:cherami@163.net*/

    import java.awt.image.*;

    public class GrayModel extends ColorModel {

    public static final int CS_MAX=0;

    public static final int CS_FLOAT=1;

    ColorModel sourceModel;

    int modelStyle;

    public GrayModel(ColorModel sourceModel) {

    super(sourceModel.getPixelSize());

    this.sourceModel=sourceModel;

    modelStyle=0;

    }

    public GrayModel(ColorModel sourceModel,int style) {

    super(sourceModel.getPixelSize());

    this.sourceModel=sourceModel;

    modelStyle=style;

    }

    public void setGrayStyle(int style) {

    modelStyle=style;

    }

    protected int getGrayLevel(int pixel) {

    if (modelStyle==CS_MAX) {

    return Math.max(sourceModel.getRed(pixel),Math.max(sourceModel.getGreen(pixel),sourceModel.getBlue(pixel)));

    }

    else if (modelStyle==CS_FLOAT){

    return (int)(sourceModel.getRed(pixel)*0.3+sourceModel.getGreen(pixel)*0.59+sourceModel.getBlue(pixel)*0.11);

    }

    else {

    return 0;

    }

    }

    public int getAlpha(int pixel) {

    return sourceModel.getAlpha(pixel);

    }

    public int getRed(int pixel) {

    return getGrayLevel(pixel);

    }

    public int getGreen(int pixel) {

    return getGrayLevel(pixel);

    }

    public int getBlue(int pixel) {

    return getGrayLevel(pixel);

    }

    public int getRGB(int pixel) {

    int gray=getGrayLevel(pixel);

    return (getAlpha(pixel)<<24)+(gray<<16)+(gray<<8)+gray;

    }

    }

    ◆◆

    评论读取中....

    请登录后再发表评论!

    ◆◆

    修改失败,请稍后尝试

    展开全文
  • 大家都知道图片是由一个个像素点组成的,黑白图片是一张二维的像素点,彩色则是RGB三张二维像素点,而图片的格式定义集中在图片头部。那么我们就可以利用图片的这种协议进行代码的隐藏: 为了不影响图片的查看,...

    隐藏代码到图片背后

    前言

    很多时候在新闻上看到黑客将恶意代码隐藏到图片背后,这种技术早已不是什么密码,今天来窥探一下背后的技术原理。

    原理

    大家都知道图片是由一个个像素点组成的,黑白图片是一张二维的像素点,彩色则是RGB三张二维像素点,而图片的格式定义集中在图片头部。那么我们就可以利用图片的这种协议进行代码的隐藏:

    1. 为了不影响图片的查看,我们可以直接将代码追加在图片的末尾。
    2. 因为屏幕显示技术的落后,像素点不同但相近的rgb的值,在电脑上显示是一样的颜色。我们可以将每个像素的最后一位使用一个字符代替,达到隐藏代码的目的。

    应用

    你可以使用vim编辑器,随便将一张图片最后追加你想要的字符,然后使用以下Python代码查看:

    with open('a.png', 'rb') as fp:
       lines = fp.readlines()
       last_line = lines[-1]
       print(last_line)
    
    

    这是我测试的结果:
    在这里插入图片描述

    思考

    1. 黑客如何运行隐藏的代码?	
    	开发一款免费的软件,带有读取图片的功能。这些不会触发安全软件的监控,读取到代码后。。。。
    
    展开全文
  • 在jQuer1.8和环境下我用 toggle方法实现了切换DIV背景图片,但在JQuery3里发现不能使用了,之后查找资料学习了一下用hasClass方法来实现,下面是我写的代码,但是没有效果,请大佬们帮我看一下是哪里问题。...
  • 知道如何实现“点击图片就令其改变颜色”(即android:state_pressed="true"),但却不知道如何实现“把鼠标悬停在上面令其改变颜色”——android:state_hovered="true"并不能达到我想要效果,我把鼠标悬停在上面...
  • 问题是这样的:在用html写网页,现在有一张图片,需要置于最底层,然后在图片上方叠加一个半透明颜色层,并在半透明...但是文字在图片下方,并且半透明的颜色也不知道怎么写 哪位朋友能指导一下代码如何写,十分感谢
  • ios8中UITabbarController的图片颜色处理

    千次阅读 2014-12-15 16:10:21
    我们知道。在IOS8中,对于...用下面的代码,可以对tabbaritem进行图片设定,即没有点击和点击之后的图片分别显示如何: UIImage * normalImage = [[UIImage imageNamed:@"abbbab"] imageWithRenderingMode:UIIm


    <strong>我们知道。在IOS8中,对于UITabbarController的方法,有些已经不能用了,下面把最新的方法介绍如下:</strong>

    1.

    用下面的代码,可以对tabbaritem进行图片设定,即没有点击和点击之后的图片分别显示如何:

        UIImage * normalImage = [[UIImage imageNamed:@"abbbab"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
        UIImage * selectImage = [[UIImage imageNamed:@"aaaaaaaaSelected"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
        UITabBarItem * tabBarItemlala = [[UITabBarItem alloc]initWithTitle:@"haha" image:normalImage selectedImage:selectImage];
        self.tabBarItem = tabBarItemlala;
    2.

    用下面的代码,可以对字体的颜色进行设定成自己想要的颜色。

        [self.tabBarItem setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor greenColor], NSForegroundColorAttributeName, nil] forState:UIControlStateNormal];
        [self.tabBarItem setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor redColor], NSForegroundColorAttributeName, nil] forState:UIControlStateSelected];
    上面两个功能的截图如下:

    他们的点击和未点击情况下的两种形式

    3.

    将所有的图片和文字在选中的时候变成自己设定的颜色

        [self.tabBarController.tabBar setTintColor:[UIColor redColor]];
    如图:




    4.背景色的修改:

        UIView *bgView = [[UIView alloc] initWithFrame:self.tabBarController.tabBar.bounds];
        bgView.backgroundColor = [UIColor redColor];
        [self.tabBarController.tabBar insertSubview:bgView atIndex:1];
        self.tabBarController.tabBar.opaque = YES;
    这里注意atIndex:1。这里是1哦,不是0,也不是2.大家可以把1换成其他的看看效果。

    下面的截图:



    展开全文
  • * 我知道位运算是什么,怎么运算,但我实在看不懂别人写位运算代码,求高人指点我如何才能看懂别人写位运算代码? * * 希望能得到详细回答,除了将这个类所有位运算都解释一遍,还请将位运算在java...
  • } 看懂了一部分,但没发现在那儿可以更滚动条的颜色的。哪位大神知道如何更改呢?原来滚动条是白色的,我想改成![图片说明](https://img-ask.csdn.net/upload/201605/17/1463454810_765264.png)这种颜色的,...
  • 在训练模型时候,我也不知道动了哪里,显著性检测结果,本来是显著性地方为白色(即权重大点),非显著区域为黑色,但是我结果却搞好反过来。 一部分图片已经生成好了,为了节约时间,只能自己进行处理。另一...
  • 在我们平常优化工作当中,少不了做超链接,包括网站内部链接和外部推广链接,但是我们很多人却不知道真正如何去真正把网站超链接做到极致,特别是对网站优化也好,还是推广转化方面其实都没有做到位。...
  • 我写网页,几乎所有textbox控件运行时背景都是蓝色,我想把它改成白色,请问如何改呢。 如图所示: ![图片说明](https://img-ask.csdn.net/upload/201606/03/1464947938_208081.jpg) 另外有个重要问题:我写...
  • 使用QListView的图片模式做了一个图片显示列表,最后设置样式的时候发现选中后图片表面有一层颜色,背景什么的都设置了,也无法去除他,有没大佬知道如何去除这层类似前景的颜色?谢谢!困扰了好久都没有去除掉。 ...
  • 基本原理 选好画板大小,设置好画笔颜色、粗细,定位好位置,依次画鼻子、头、耳朵、眼睛、腮、...使用海龟作图,我们不仅能够只用几行代码就创建出令人印象深刻视觉效果,而且还可以跟随海龟看看每行代码如何影响到
  • 我们知道图片除了最普通彩色图,还有很多类型,比如素描,卡通,黑白等等,今天就介绍如何使用python和opencv来实现图片变素描图。 首先将彩色图转换成灰度图; 对灰度图进行求其反色操作; 对第2步得到结果...
  • echarts各种字体颜色的修改

    千次阅读 2019-09-10 14:37:49
    这篇文章主要讲述Echarts设置字体和线条的颜色...这样更方便阅读及读者知道,是否对自己有所帮助,其重点是如何在模板动态网页或JSP网站中插入Echarts图片。 1.修改标题及背景颜色 2.设置柱形图颜色 3...
  • 我们知道其实一张图片是由很多不同像素点所组成,每种像素点可以表示一种颜色。那么如果我们用不同字符来代替各种像素点,是不是就可以将图片转化为字符画了?没错就是要用这个原理。2.准备工作为了实现我们本片...
  • 我们知道其实一张图片是由很多不同像素点所组成,每种像素点可以表示一种颜色。那么如果我们用不同字符来代替各种像素点,是不是就可以将图片转化为字符画了?没错就是要用这个原理。2.准备工作为了实现我们本片...
  • 我们知道其实一张图片是由很多不同像素点所组成,每种像素点可以表示一种颜色。那么如果我们用不同字符来代替各种像素点,是不是就可以将图片转化为字符画了?没错就是要用这个原理。 2.准备工作 为了实现我们...
  • Echarts字体和线条颜色设置操作笔记

    万次阅读 2016-11-07 17:26:29
    这篇文章主要讲述Echarts设置字体和线条的颜色...这样更方便阅读及读者知道,是否对自己有所帮助,其重点是如何在模板动态网页或JSP网站中插入Echarts图片。 1.修改标题及背景颜色 2.设置柱形图颜色 3.修改坐标...
  • 这样更方便阅读及读者知道,是否对自己有所帮助,其重点是如何在模板动态网页或JSP网站中插入Echarts图片。1.修改标题及背景颜色2.设置柱形图颜色3.修改坐标轴字体颜色4.设置Legend颜色5.修改折线颜色6.修改油...
  • 这篇文章主要讲述Echarts设置字体和...这样更方便阅读及读者知道,是否对自己有所帮助,其重点是如何在模板动态网页或JSP网站中插入Echarts图片。  1.修改标题及背景颜色      2.设置柱形图颜色
  • 逻辑清晰地写在内容区</li><li>贴代码要提前格式化好,有颜色高亮那种,贴文本,不要贴图片</li><li>提问题前,必须仔细阅读 REMADE.md + 在已关闭问题中寻找与自身相关问题,...
  • 我想修改iframe中嵌套网站的温度的颜色,我在火狐上看的代码是: ![图片说明](https://img-ask.csdn.net/upload/201501/30/1422604595_19268.png) 我不知道如何控制温度上css样式,求指教,谢啦啊
  • WebGL 纹理颜色原理

    2019-01-28 18:07:00
    现在已经知道顶点着色器和片段着色器一起决定着向颜色缓冲区写入颜色信息并最终呈现出来,那么这个过程是什么样,如果图形的颜色需要用现有图片来渲染那么又该如何操作? 颜色缓冲区 在绘制开始前,经常见到调用...
  • 我想用css3拖放功能来做一个li 拖放和序号重排,不知道哪位大神会呢? ![图片说明](https://img-ask.csdn.net/upload/201706/20/1497924682_964578.jpg) 拖住没放下时候最好给下面一个颜色框,背景色也给一...
  • echarts各种字体颜色修改

    千次阅读 2018-09-11 13:57:17
    这样更方便阅读及读者知道,是否对自己有所帮助,其重点是如何在模板动态网页或JSP网站中插入Echarts图片。 1.修改标题及背景颜色 技术分享 技术分享 2.设置柱形图颜色 技术分享技术分享 ...

空空如也

空空如也

1 2 3 4 5
收藏数 86
精华内容 34
关键字:

如何知道图片的颜色代码