Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing 如何按颜色区域将图像文件分离为多个图像文件?_Image Processing_Imagemagick - Fatal编程技术网

Image processing 如何按颜色区域将图像文件分离为多个图像文件?

Image processing 如何按颜色区域将图像文件分离为多个图像文件?,image-processing,imagemagick,Image Processing,Imagemagick,以透明背景(png)上的圆形和方形图像为例 我想按区域分割此图像。区域由连接的颜色定义。我有一个圆形区域。和一个正方形区域 输出将是一个带有圆圈的图像文件 还有第二个图像文件,上面有正方形 ImageMagick可以这样做吗?其他工具可以做到这一点吗?我如何才能做到这一点?以下是如何在ImageMagick中做到这一点。我注意到你发布的图片背景是白色的,不是透明的。但是,我已将白色改为透明。我首先使用连接的组件获取对象的边界框。然后,我在每个边界框上循环,将其裁剪出来,并使用裁剪图像中存储

以透明背景(png)上的圆形和方形图像为例

我想按区域分割此图像。区域由连接的颜色定义。我有一个圆形区域。和一个正方形区域

输出将是一个带有圆圈的图像文件

还有第二个图像文件,上面有正方形


ImageMagick可以这样做吗?其他工具可以做到这一点吗?我如何才能做到这一点?

以下是如何在ImageMagick中做到这一点。我注意到你发布的图片背景是白色的,不是透明的。但是,我已将白色改为透明。我首先使用连接的组件获取对象的边界框。然后,我在每个边界框上循环,将其裁剪出来,并使用裁剪图像中存储的虚拟画布信息将其放回透明图像中

输入:



以下是如何在ImageMagick中执行此操作。我注意到你发布的图片背景是白色的,不是透明的。但是,我已将白色改为透明。我首先使用连接的组件获取对象的边界框。然后,我在每个边界框上循环,将其裁剪出来,并使用裁剪图像中存储的虚拟画布信息将其放回透明图像中

输入:



请参阅连接组件处理或泛光填充您不想要的区域,使其合并到背景中。请参阅连接组件处理或泛光填充您不想要的区域,使其合并到背景中。
bboxArr=(`convert circle_rectangle_transp.png -type bilevel \
-define connected-components:verbose=true \
-define connected-components:exclude-header=true \
-define connected-components:mean-color=true \
-connected-components 8 null: | grep "gray(0)" | awk '{print $2}'`)

echo "${bboxArr[*]}"

i=0
for bbox in ${bboxArr[*]}; do
echo $bbox
convert circle_rectangle_transp.png -crop "$bbox" -background none -flatten  circle_rectangle_transp_$i.png
i=$((i+1))
done