gpt4 book ai didi

wolfram-mathematica - 在图像中查找颜色 : can Nearest do it?

转载 作者:行者123 更新时间:2023-12-04 10:28:42 27 4
gpt4 key购买 nike

我正在尝试找到一种在图像中查找颜色的方法。这是一个简化的示例:

tree = ExampleData[{"TestImage", "Tree"}]

tree image from Mathematica's example data set

我可以看到那里有蓝色,所以我想在像素海洋中的某个地方有一个 xy 位置。假设我正在寻找一种特定的蓝色阴影,我可以提供一些近似的 RGB 值:
Manipulate[Graphics[{RGBColor[r, g, b], Disk[]}], {r, 0, 1}, {g, 0, 1}, {b, 0, 1}] 

simple colour mixer

现在我想找到一些具有该值或足够接近的像素的坐标。 Nearest也许能够做到:
Nearest[ImageData[tree], {0.32, 0.65, .8}]

但不是 - 它'产生了非常大的输出'......

这是这样做的相反:
ImageValue[tree, {90, 90}]

如果我已经有了数字就可以了,或者可以单击图像。一旦知道我想要的颜色的位置,我就可以将它提供给需要“标记”的函数 - 例如 RegionBinarize .

我觉得必须有一个 Mathematica 函数,但还没有找到它......

最佳答案

做这个

Position[#, First@Nearest[Flatten[#, 1], {0.32, 0.65, .8}]] &@
ImageData[tree]
(*
{{162, 74}}
*)

做你想做的事?

好的,试试这个:
tree = ExampleData[{"TestImage", "Tree"}];

dat = Reverse[ImageData[tree]\[Transpose], {2}];

dim = Dimensions[dat][[{1, 2}]];

nearfunc = Nearest[Join @@ dat -> Tuples @ Range @ dim];

Manipulate[
rgb = Extract[dat, Ceiling[p]];
posns = nearfunc[rgb, num];
Graphics[{
Raster[dat\[Transpose]], Red, Point[posns]
}],
{{p, {10, 10}}, Locator},
{{num, 20}, 1, 100, 1}
]

这使您可以单击图像上的某处,确定最接近(根据默认规范)该点颜色的点数,并显示它们。 num是要显示的点数。

它看起来像这样:

Mathematica graphics

关于wolfram-mathematica - 在图像中查找颜色 : can Nearest do it?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8553080/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com