我需要在ImageMagick中生成文本的低分辨率黑白图像。这些图像将绘制在一个小的LED矩阵中。文字的高度必须为7像素。
目前,我正在使用:
convert -negate -threshold 15% -font Courier -size 80x11 caption:'hello' out.bmp
输出图像:
由于低分辨率和抗锯齿校正,即使高度超过了我的需要,字母也不是漂亮且对称的。有没有人这样做可以帮助我?
版本:ImageMagick 6.8.9-9 Q16 x86_64
答案 0 :(得分:3)
我发现的解决方案是使用TrueType字体。刚刚从互联网上获得了免费的字体,并以它的大小使用了它。
P.S .:也切换为OpenCV。我的Python应用程序动态生成图像。每分钟调用ImageMagick数次(可能接近一百次)的成本太高。
发布摘要,希望对您有所帮助。
import cv2 as cv
from PIL import ImageFont, ImageDraw, Image
# Creates a black image with 80x10 size
img = Image.new('RGBA', (80, 10), (0,0,0,0))
draw = ImageDraw.Draw(img)
# Load TrueType font of height size 8
font = ImageFont.truetype("font.ttf", 8)
# Draw text using the loaded font
draw.text((0, 0), "Hello World!", font=font)
img.save("out.bmp")
输出图像:
答案 1 :(得分:1)
我倾向于输出大于要求的字母,然后修剪所有多余的备用空间,以充分利用可用的分辨率,然后根据您的特定需求调整大小:
convert -size 320x32 -font Courier label:'hello' -trim +repage -resize 80x8 +write out.gif
答案 2 :(得分:1)
马克,我想他想要二进制结果。但是你有个好主意。
让我们以Mark的结果,阈值为准,然后缩小到8像素高。这个ImageMagick命令似乎比我以前的帖子更好。
马克的输出:
convert wcwuj.gif -threshold 60% +write thresh.gif -scale x8 result.gif
阈值结果:
定标结果:
也许使Mark的图像更大,并选择更好的阈值会产生更好的结果。
答案 3 :(得分:0)
您尚未告诉我们ImageMagick或平台的版本,也没有给我们显示结果以查看可能出问题的地方。另外,尽管ImageMagick 6相当宽容,但您的ImageMagick语法也不正确。
这是我使用ImageMagick 6.9.10.8 Q16 Mac OSX Sierra所获得的。第一个输出的高度为8像素,第二个输出的比例为1000%(10x)。
这个论坛似乎没有将bmp转换为可用的显示格式,因此我使用GIF代替BMP。但是无论是BMP还是GIF,我的结果都一样
convert -size x8 -font Courier label:'hello' -negate -threshold 20% +write out.gif -scale 1000% out2.gif
我曾尝试更改阈值,但更大或更小的值会使情况更糟。大约10-30%的范围会产生相同的结果。
我还尝试使用-monochrome代替-threshold并获得以下信息:
convert -size x8 -font Courier label:'hello' -negate -monochrome +write out3.gif -scale 1000% out4.gif
您可以尝试点矩阵字体。参见https://www.1001fonts.com/digital+dot-matrix-fonts.html?page=1&items=10。我还没有尝试过。
答案 4 :(得分:0)