假设我有下面的图像,我想使用其中的土壤颜色部分来创建另一个240x240的图像,只有这个纹理。我也有污染部分的遮罩。
wbgh16ku1#
您应该能够根据http://www.cs.jhu.edu/~misha/Fall07/Papers/Perez03.pdf在Python/OpenCV中执行泊松无缝混合(请参见https://docs.opencv.org/4.1.1/df/da0/group__photo__clone.html#ga2bf426e4c93a6b1f21705513dfeca49d),但是我尝试了一下,在我的OpenCV4.6.0版本中,它似乎不适用于这种情况但是如果你愿意使用另一个软件工具,比如Imagemagick(使用子进程调用从Python调用)或Python Wand,它基于Imagemagick(假设它是最新的Imagemagick),那么下面的代码就可以工作:纹理的输入裁剪:
这个想法是使边界的每一边都是它的平均值,它的对边作为背景图像。蒙版只是一个大小相同的白色图像,边缘是黑色的。在Imagemagick中,无缝混合只是-composite ... -composite的另一个选项。下面创建背景图像和蒙版,然后将它们合成,然后将其平铺在3x3数组中。
magick old_texture.png +write mpr:img \ \( mpr:img -gravity east -crop 1x+0+0 +repage \) \ \( mpr:img -gravity west -crop 1x+0+0 +repage \) \ \( mpr:img -gravity north -crop x1+0+0 +repage \) \ \( mpr:img -gravity south -crop x1+0+0 +repage \) \ \( \ -clone 1,2 -evaluate-sequence mean +write mpr:LR +delete \ -clone 3,4 -evaluate-sequence mean +write mpr:TB +delete \ \) \ -delete 0-4 \ mpr:LR \( mpr:img -shave 1x0 \) mpr:LR +append \ -shave 0x1 mpr:TB +swap mpr:TB -append \ old_texture_background.png magick old_texture.png -fill white -colorize 100 \ -shave 1x1 -bordercolor black -border 1 \ old_texture_mask.png magick old_texture_background.png old_texture.png old_texture_mask.png \ -define compose:args=400x0.00002+100 -compose seamless-blend \ -composite \ -duplicate 2 +append \ -duplicate 2 -append \ old_texture_seamless_tiled_3x3.png
背景图像:
蒙片图像:
生成的3x3平铺无缝混合:
1条答案
按热度按时间wbgh16ku1#
您应该能够根据http://www.cs.jhu.edu/~misha/Fall07/Papers/Perez03.pdf在Python/OpenCV中执行泊松无缝混合(请参见https://docs.opencv.org/4.1.1/df/da0/group__photo__clone.html#ga2bf426e4c93a6b1f21705513dfeca49d),但是我尝试了一下,在我的OpenCV4.6.0版本中,它似乎不适用于这种情况
但是如果你愿意使用另一个软件工具,比如Imagemagick(使用子进程调用从Python调用)或Python Wand,它基于Imagemagick(假设它是最新的Imagemagick),那么下面的代码就可以工作:
纹理的输入裁剪:
这个想法是使边界的每一边都是它的平均值,它的对边作为背景图像。蒙版只是一个大小相同的白色图像,边缘是黑色的。在Imagemagick中,无缝混合只是-composite ... -composite的另一个选项。下面创建背景图像和蒙版,然后将它们合成,然后将其平铺在3x3数组中。
背景图像:
蒙片图像:
生成的3x3平铺无缝混合: