- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有大量大小从 120x90 到 320x240 的 JPEG 缩略图图像,我想将它们分类为类似真实生活或类似卡通。
如何使用 ImageMagick 做到这一点的公用事业:convert
, compare
, identify
?或者有没有其他程序可以做到这一点?
最佳答案
我想你最好的一点是直方图和像素数之间的 radio 。卡通线图像趋向于颜色数量少于现实生活中的颜色。
您可以使用
COLORS=`convert picture.jpg -format %c histogram:info:- | wc -l`
WIDTH=`jpeginfo picture.jpg | sed -r "s/.* ([0-9]+) x.*/\1/"`
HEIGHT=`jpeginfo picture.jpg | sed -r 's/.*x ([0-9]+) .*/\1/'`
echo $WIDTH $HEIGHT $COLORS | awk '{ print $3/($1 * $2);}'
jpeginfo
只能做 jpg,它不是 ImageMagick 的一部分。
#!/bin/sh
IMAGE=$1
COLORS=convert $IMAGE -format %c histogram:info:- | wc -l
WIDTH=<b>identify</b> $IMAGE | sed -r "s/.* ([0-9]+)x[0-9]+ .*/\1/"
HEIGHT=<b>identify</b> $IMAGE | sed -r 's/.* [0-9]+x([0-9]+) .*/\1/'
RATIO=echo $WIDTH $HEIGHT $COLORS | awk '{ print <b>($1 * $2)/$3</b>;}'
echo $RATIO | awk '{ printf "%020.5f",$1 }'
#!/bin/sh
cd images
FILES=ls
for FILE in $FILES; do
IsIMAGE=identify $FILE 2>&1 | grep " no decode delegate " | grep -o "no"
if [ "$IsIMAGE" = "no" ]; then continue; fi
IsIMAGE=`identify $FILE 2>&1 | grep " Improper image header " | grep -o "Improper"`
if [ "$IsIMAGE" = "Improper" ]; then continue; fi
echo `.././CheckCartoon.sh $FILE` $FILE
完毕
光盘..
现在为了测试你在这里复制文件。
图1:~/test/images/Cartoon-01.jpg
图2:~/test/images/Cartoon-02.png
图3:~/test/images/Cartoon-03.gif
图4:~/test/images/Real-01.jpg
图5:~/test/images/Real-02.jpg
图6:~/test/images/Real-03.jpg
http://dl.getdropbox.com/u/1961549/StackOverflow/SO1518347/Images.png
然后我运行 ./CheckAll.sh | sort
(在 test
文件夹中)。这是我想要的。
00000000000003.31362 Real-03.jpg
00000000000004.61574 Real-02.jpg
00000000000009.89920 Cartoon-01.jpg
00000000000013.05870 Real-01.jpg
00000000000020.55470 Cartoon-03.gif
00000000000032.21900 Cartoon-02.png
如您所见,结果通常很好。您可以使用像 15 这样的数字作为分隔符。
Cartoon-01.jpg
是一幅画,但它看起来很逼真,所以很容易混淆。还有 Real-01.jpg
是我女 friend 站在大海前的照片,所以颜色的数量比平时少。这并不奇怪为什么会发生困惑。
我在这里向你展示的仍然是一个原始理论。如果你真的想要一个决定性的指示,你可能需要找到指标的数量并进行比较。例如,局部对比度的程度。
希望这会有所帮助。
关于image-processing - 图像分类 - 检测图像类似于卡通,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1518305/
我不明白显示映射到 OpenGL 三角形的 Sprite 的概念。 如果 OpenGL ES 只绘制三角形和点,如何显示/映射非三角形形状? 为什么映射到三角形的形状不会变形? 解释一下: 在我看来,
我是一名优秀的程序员,十分优秀!