免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: young19860802
打印 上一主题 下一主题

如果用shell判断一张图片中那个颜色占比最多? [复制链接]

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
21 [报告]
发表于 2010-07-23 08:39 |只看该作者
jpg是经过压缩的。
你要取每个像素的颜色,还得做反余弦变换之类的操作

如果是bmp的话,可能可能性还大 ...
wacs5 发表于 2010-07-22 21:24



    转成BMP还是简单的,unix 系统有现成的程序:  djpeg
  1. /usr/bin/djpeg -bmp -outfile abc.bmp abc.jpg
复制代码

论坛徽章:
0
22 [报告]
发表于 2010-07-23 09:01 |只看该作者
围观,等待 解决 的人出现

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-08-24 06:20:00综合交流区版块每日发帖之星
日期:2015-10-14 06:20:00IT运维版块每日发帖之星
日期:2015-10-25 06:20:00IT运维版块每日发帖之星
日期:2015-11-06 06:20:00IT运维版块每日发帖之星
日期:2015-12-10 06:20:00平安夜徽章
日期:2015-12-26 00:06:302016猴年福章徽章
日期:2016-02-18 15:30:34IT运维版块每日发帖之星
日期:2016-04-15 06:20:00IT运维版块每日发帖之星
日期:2016-05-21 06:20:00综合交流区版块每日发帖之星
日期:2016-08-16 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-14 06:20:00
23 [报告]
发表于 2010-07-23 09:06 |只看该作者

有意思啊

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
24 [报告]
发表于 2010-07-23 13:47 |只看该作者
本帖最后由 rdcwayx 于 2010-07-23 13:52 编辑

方法找到了,下面这个现成的java 程序就可以生成 RGB 值, 输出格式如下:
  1. x,y: 3, 0
  2. argb: 255, 50, 50, 50

  3. x,y: 4, 0
  4. argb: 255, 97, 97, 97

  5. 有了这个输出后,就可以排序求出最多的颜色

复制代码
  1. java JavaWalkBufferedImageTest1 |grep "^argb |sort |uniq -c |sort -n
复制代码
http://www.devdaily.com/blog/pos ... sing-java-bufferedi

但是我能编译,却无法执行:
  1. package com.devdaily.imagetests;

  2. import java.awt.Component;
  3. import java.awt.image.BufferedImage;
  4. import java.io.IOException;
  5. import javax.imageio.ImageIO;

  6. public class JavaWalkBufferedImageTest1 extends Component {

  7.   public static void main(String[] foo) {
  8.     new JavaWalkBufferedImageTest1();
  9.   }

  10.   public void printPixelARGB(int pixel) {
  11.     int alpha = (pixel >> 24) & 0xff;
  12.     int red = (pixel >> 16) & 0xff;
  13.     int green = (pixel >> 8) & 0xff;
  14.     int blue = (pixel) & 0xff;
  15.     System.out.println("argb: " + alpha + ", " + red + ", " + green + ", " + blue);
  16.   }

  17.   private void marchThroughImage(BufferedImage image) {
  18.     int w = image.getWidth();
  19.     int h = image.getHeight();
  20.     System.out.println("width, height: " + w + ", " + h);

  21.     for (int i = 0; i < h; i++) {
  22.       for (int j = 0; j < w; j++) {
  23.         System.out.println("x,y: " + j + ", " + i);
  24.         int pixel = image.getRGB(j, i);
  25.         printPixelARGB(pixel);
  26.         System.out.println("");
  27.       }
  28.     }
  29.   }

  30.   public JavaWalkBufferedImageTest1() {
  31.     try {
  32.       // get the BufferedImage, using the ImageIO class
  33.       BufferedImage image =
  34.         ImageIO.read(this.getClass().getResource("WhiteSpot.jpg"));
  35.       marchThroughImage(image);
  36.     } catch (IOException e) {
  37.       System.err.println(e.getMessage());
  38.     }
  39.   }

  40. }
复制代码
运行错误提示。懂JAVA的给看看。


  1. bash-3.00$ ls
  2. WhiteSpot.jpg
  3. JavaWalkBufferedImageTest1.java

  4. bash-3.00$ javac JavaWalkBufferedImageTest1.java

  5. bash-3.00$ java JavaWalkBufferedImageTest1
  6. Exception in thread "main" java.lang.NoClassDefFoundError: JavaWalkBufferedImageTest1 (wrong name: com/devdaily/imagetests/JavaWalkBufferedImageTest1)
  7.         at java.lang.ClassLoader.defineClass0(Native Method)
  8.         at java.lang.ClassLoader.defineClass(ClassLoader.java:539)
  9.         at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
  10.         at java.net.URLClassLoader.defineClass(URLClassLoader.java:251)
  11.         at java.net.URLClassLoader.access$100(URLClassLoader.java:55)
  12.         at java.net.URLClassLoader$1.run(URLClassLoader.java:194)
  13.         at java.security.AccessController.doPrivileged(Native Method)
  14.         at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
  15.         at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
  16.         at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
  17.         at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
  18.         at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
  19. bash-3.00$
复制代码

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
25 [报告]
发表于 2010-07-23 14:33 |只看该作者
用vim或hex先转成16进制,然后处理行不?

论坛徽章:
0
26 [报告]
发表于 2010-07-23 14:51 |只看该作者
回复 24# rdcwayx


    请检查java相关环境变量是否满足代码版本要求。。。。

论坛徽章:
0
27 [报告]
发表于 2010-07-23 14:55 |只看该作者
回复 7# iori809


    数据 就是最普通的jpg文件,就像百度图片有个按钮,选择蓝色按钮,网页上就会跳出蓝色像素居多的图片,就是这样的
http://image.baidu.com/i?tn=baid ... d=chinaunix&s=0

论坛徽章:
0
28 [报告]
发表于 2010-07-23 17:29 |只看该作者
坐等分析。

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
29 [报告]
发表于 2010-07-23 21:02 |只看该作者
全部搞定。
  1. javac -d /temp JavaWalkBufferedImageTest1.java
  2. cp WhiteSpot.jpg com/devdaily/imagetests/
  3. java -classpath /temp com/devdaily/imagetests/JavaWalkBufferedImageTest1
复制代码
就拿楼上zhangjiang 的美女图做实验, 产生了一个10M的文件RGB_value, 测下来,应该是黑色用的最多

bash-3.00$ cat RGB_value |grep ^argb |sort |uniq -c |sort -n |tail -50
141 argb: 255, 0, 0, 4
144 argb: 255, 0, 3, 6
148 argb: 255, 0, 2, 5
153 argb: 255, 255, 254, 253
155 argb: 255, 252, 255, 253
157 argb: 255, 245, 253, 255
159 argb: 255, 254, 255, 251
162 argb: 255, 255, 253, 254
163 argb: 255, 252, 253, 255
164 argb: 255, 240, 251, 255
166 argb: 255, 241, 255, 255
169 argb: 255, 243, 254, 255
170 argb: 255, 1, 1, 3
171 argb: 255, 248, 253, 255
173 argb: 255, 246, 254, 255
173 argb: 255, 255, 255, 248
176 argb: 255, 254, 255, 250
178 argb: 255, 0, 1, 3
178 argb: 255, 242, 255, 255
178 argb: 255, 243, 255, 255
183 argb: 255, 0, 4, 7
185 argb: 255, 242, 253, 255
198 argb: 255, 250, 254, 255
199 argb: 255, 249, 254, 255
200 argb: 255, 254, 254, 255
208 argb: 255, 244, 254, 255
235 argb: 255, 254, 254, 252
246 argb: 255, 253, 255, 254
249 argb: 255, 254, 254, 254
250 argb: 255, 0, 1, 0
280 argb: 255, 255, 253, 255
286 argb: 255, 253, 254, 255
306 argb: 255, 244, 255, 255
371 argb: 255, 255, 255, 250
378 argb: 255, 250, 255, 255
493 argb: 255, 245, 255, 255
497 argb: 255, 246, 255, 255
509 argb: 255, 254, 255, 253
634 argb: 255, 248, 255, 255
666 argb: 255, 0, 0, 2
678 argb: 255, 249, 255, 255
743 argb: 255, 0, 0, 0
766 argb: 255, 247, 255, 255
848 argb: 255, 255, 255, 251
1148 argb: 255, 251, 255, 255
1404 argb: 255, 252, 255, 255
2018 argb: 255, 255, 254, 255
2262 argb: 255, 254, 255, 255
2826 argb: 255, 255, 255, 253
23369 argb: 255, 255, 255, 255

论坛徽章:
0
30 [报告]
发表于 2010-07-24 12:25 |只看该作者
shell 还真能做到这个 !!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP