在 ImageMagick 的显示中,如果我按“c”并开始拖动裁剪框,则左上角会出现一个小框,显示裁剪框的 WxH+x+y。
除了截取屏幕截图并在图像上运行 tesseract-ocr 或类似程序之外,还有什么方法可以在 bash 中以编程方式访问数据?
答案1
如果您使用的是 X11,则框中写入的文本是使用通过套接字连接发送到 X11 服务器的图形命令完成的。可以通过插入实用程序来检查这些命令xscope
。例如,
xscope -v1 -i1
将开始监听显示连接:1
(-i1
)并将收到的 X11 命令打印到 stdout(详细级别 1),然后再将它们发送到实际显示器,大概是:0
。因此,您可以简单地运行DISPLAY=:1 display my.jpg
或类似命令并查看此输出,通常是:
............REQUEST: PolyText8
drawable: DWB 02e002f3
gc: GXC 02e00099
x: 11
y: 18
items:
delta: 0
text item 8 string: " 53x48+310+109"
一个简单的sed
脚本可以提取此文本项以进行进一步处理:
xscope -v1 -i1 |
sed -n '/text item 8 string: " /{s///;s/"//p}'
另一个可以完成类似工作的程序是x11trace
,有时被称为xtrace
。
x11trace -D:1
产生如下输出
000:<:14fa: 32: Request(74): PolyText8 drawable=0x02e002f3 gc=0x02e00099 x=11 y=18 texts={delta=0 s=' 26x38+425+297'};
可以使用以下方式进行过滤
sed -n "/PolyText8 /{s/.*s='//;s/'.*//p}"