我有一个图像:,我对其进行了分段以接收二进制图像。我想用不同的颜色标记图像中的每个对象。到目前为止,我有以下代码:
listen 8080 deferred;
client_max_body_size 500M;
location /invocations {
proxy_pass http://localhost:8501/v1/models/<modelname>:predict;
}
location /ping {
return 200 "OK";
}
输出为以下图像:,这不是我想要的。它为背景着色,并且对象为白色。我只希望这些物体具有不同的颜色。
任何形式的帮助将不胜感激!
答案 0 :(得分:1)
在您的示例中,图像的背景和前景与您认为的相反。 matlab命令的默认设置是假定较高值的像素(白色)是前景或感兴趣的项目,而较低值的像素(黑色)是背景。因此,当您运行示例代码时,对象CC
仅包含1个对象(图像中为蓝色的“背景”):
CC =
struct with fields:
Connectivity: 8
ImageSize: [256 256]
NumObjects: 1
PixelIdxList: {[43341×1 double]}
解决此问题的任何简便方法都只是使用imcomplement
命令反转清理后的图像。将此行添加到您的代码中:
% invert the image so that the background is black
rem = imcomplement(rem);
现在CC
结构包含62个已标识的对象:
CC =
struct with fields:
Connectivity: 8
ImageSize: [256 256]
NumObjects: 62
PixelIdxList: {1×62 cell}
您将获得此图像:
如果要更改用于项目的颜色,请查看colormap
命令的label2rgb
属性。