hyp*_*not 5 c++ image-manipulation image imagemagick image-processing
我正在使用一个程序,可以渲染彩色图像,但只有没有alpha信息.我想通过使用两个并减去它们来从这些图像中获取alpha信息.我可以将背景设置为不同的颜色.
我的想法是,如果我渲染一个黑色背景图像和另一个白色图像,那么我可以相互减去这些图像并得到一个alpha通道.但它只是一个理论,我不知道如何在实践中这样做,如果有任何标准的方法/算法,通过从两个图像中相互减去它们来提取alpha信息.
我想使用命令行程序(或在C++中非常容易使用的库)来执行此处理.我之前使用过ImageMagick的convert.exe,但我从未使用过ImageMagick中的其他工具.
是否有人可以推荐我如何在实践中做到这一点?我正在寻找的是某种命令行解决方案或C++库,其中包含易于理解的示例文件,可以执行此操作.
更新:我的背景是计算机生成的,纯色.所以我可以把它设置为0,0,0黑色.这是一个例子.

这,如果你的对象不同于背景不够好,但可能不够好,这看起来似乎是正好你问什么
编辑:第二个以这个命令行结束(用你的图像替换<>中的东西)
convert <image1> <image2> -alpha off \
\( -clone 0,1 -compose difference -composite \
-separate -evaluate-sequence max -auto-level -negate \) \
\( -clone 0,2 -fx "v==0?0:u/v-u.p{0,0}/v+u.p{0,0}" \) \
-delete 0,1 +swap -compose Copy_Opacity -composite \
<output>
Run Code Online (Sandbox Code Playgroud)
您需要在输出中使用支持alpha的格式,但这可能是您想要的.(注意:我实际上并没有为自己试过这个,所以它可能不适用于最新的imagemagick版本,因为我不认为文档总是最新的)
或者,如果你真的只使用纯黑色和白色,你可以这样做:
convert <image1> <image2> -alpha off \
\( -clone 0,1 -compose difference -composite -negate \) \
\( -clone 0,2 +swap -compose divide -composite \) \
-delete 0,1 +swap -compose Copy_Opacity -composite \
<output>
Run Code Online (Sandbox Code Playgroud)