将 img1 的纹理添加到 img2 以获得结果 img - Python / Javascript

Add texture of img1 to img2 to get result img - Python / Javascript

我正在尝试将 img1 的纹理和图案添加到 img2 以获得类似于结果图像 img3 的结果 - Img2 具有透明背景,结果 Img3 也必须具有透明背景

Img1

Img2

Img3


以下是在 Imagemagick 中的操作方法。它可以在 Python/OpenCV 中完成,但我现在没有时间来实现它。在 Imagemagick 中使用我的 bash shell 脚本之一对纹理进行球形化非常容易。

(我在 How make eye and nose bigger or smaller in opencv and python in a previous post. And an example showing how to do the hard light composite in Python/OpenCV is in 展示了如何在 Python/OpenCV 中进行球面变形)

  • 首先,我必须 trim 球体图像到其边界并使其尺寸为正方形。
  • 然后我必须调整纹理图像的大小并将其裁剪到与 trimmed sphere 图像相同的尺寸。
  • 然后我将 spherize 脚本应用到裁剪后的纹理图像
  • 最后,我保存了球体图像的 alpha 通道,并对球体图像和球化纹理图像进行了硬光合成。并保存结果

球形图像:

纹理图像:

convert sphere.png -trim +repage sphere_trim.png

convert texture.jpg -resize 1375x1375^ -gravity center -crop 1375x1375+0+0 +repage texture_resize_crop.jpg

spherize -a 1 -b white texture_resize_crop.jpg texture_resize_crop_spherize_a1.jpg

convert texture_resize_crop_spherize_a1.jpg \
sphere_trim.png \
\( +clone -alpha extract +write mpr:alpha +delete \) -alpha off \
\( +clone \) \
-compose hardlight -composite \
mpr:alpha -alpha off -compose over -compose copy_opacity -composite \
sphere_texture.png

修剪后的球体图像:

调整大小并裁剪纹理图像:

球形纹理图像:

Hardlight Composite 的结果: