我收藏了大约 3,000 张代表我公司产品线的照片。每张照片都是在一个特殊的灯箱内拍摄的。系统会生成一个代表产品的唯一条形码,将其打印在标签上,并放置在灯箱中每个产品的旁边。
是否可以通过编程识别每张图片中唯一的条形码并据此重命名图片?
答案1
哦天哪!实际上有现成的东西可以给你提供你正在寻找的功能:zbar
#!/bin/bash
for file in $*
do
name="`zbarimg -q $file`"
echo "Renaming $file to $name"
mv $file $name
done
将其放入文件中。rename_barcode.sh
例如。并且:
chmod u+x rename_barcode.sh
./rename_barcode.sh *.jpg *.png
当然,它有点粗糙(如果没有找到条形码怎么办?),但zbarimg
它能提供您想要的功能。剩下的部分实际上只是脚本。
编辑:
抱歉,您没有提到 Linux。上述脚本是假设zbar
已安装包的 bash 脚本。如果您使用的是 Windows,则只需在某处安装 zbarimg.exe 并创建类似的脚本,但使用 MS Batch 语法。
答案2
我怀疑你能否找到任何现成的软件来提供你正在寻找的功能。更可能的是,你需要编写一些自定义代码来解析条形码图像,读取它们,然后重命名图像。当然,这不仅昂贵,而且耗时。所以真正的问题应该是手动完成这项工作更便宜,还是雇人为你编写你可能只会使用几次的自定义软件?实习生对于这两种可能性都很好。
但是,如果您愿意编写一些代码,这个代码示例将是一个很好的开端。
http://www.codeproject.com/Articles/42852/Reading-Barcodes-from-an-Image-III
它为你完成了大部分繁重的工作,你只需要设置一个系统来重命名你的文件并添加一些业务逻辑,以便让它在批处理设置中工作。我以前玩过它,只要你的条形码可见,它就非常强大。
答案3
所问过程的一个主要问题是程序需要在没有用户提示的情况下识别条形码。如果条形码相对于框架中的产品较大,那么您可能会成功。有开源库和二进制文件可用,可以读取 TIFF 等并返回字符串。(ZBar 是其中之一 IIRChttp://www.youtube.com/watch?v=rqzQb_HMYf8)
我曾尝试用大约 36 平方英寸的扁平物品(并且没有预算)进行此操作,但条形码太大,以至于挤掉了框架中的物体。
我使用的相机由联网计算机远程控制,所用的软件将图像直接捕获到文件服务器,并有一个文本字段用于将用户文本附加到自动命名方案。我知道这样的软件可用于专业的佳能和尼康相机。(我不想把这变成广告,所以我不会提到产品,但我使用的佳能专用软件是我几年前购买的,大约 50 美元)
由于许多条形码扫描仪可以模拟键盘输入,摄影师也许可以使用类似的解决方案,然后您可以引入一个流程,将焦点设置在软件中的字段上,使用扫描棒读取器扫描代码(将零件编号输入字段),然后放置要拍摄的物品。再加上自动时间戳,您将在服务器上拥有预先命名的文件,不再需要从相机卡上“偷偷摸摸地”获取图像。
额外的好处是,摄影师可以在将物品移出场景之前在大显示器上查看图像。
(有些相机捆绑了功能有限的捕捉软件,因此,让摄影师将它们捕捉到磁盘,然后让你自己的一个人在知道物品代码的情况下动态地重命名它们,这比稍后处理识别和重命名 3000 个物品的任务要好)
答案4
如果图像中的条形码足够好,您应该能够使用标准扫描仪 - 就像这个一样,直接从图像中读取条形码。
http://www.amazon.co.uk/My-Link-Barcode-Scanner-Reader-Reading/dp/B000QGSUUK。
它们只是输出条形码所代表的一系列字符。然后,您可以用它重命名文件。
(其他扫描仪也可用)。