我有以下代码:
ListBox
我想要的是获得colorarray的每个元素(包含10个元素)和colorfeature3的10个元素之间的差异(数组包含750个元素,每个10个元素与其他元素分开,因为它代表了一个特征数据集中的图像)并将差值保存到10 * 10数组然后得到每行的最小值并将其保存到列表
任何人都可以帮忙吗?答案 0 :(得分:1)
首先,您需要定义最近的颜色"手段。这是一个可能有用的答案:Find nearest RGB value using color palette array in C。
public int Closeness(int c1, int c2)
{
// Example algorithm
int r1 = c1 / 0x010000 - c2 / 0x010000;
int g1 = (c1 % 0x010000) / 0x00100 - (c2 % 0x010000) / 0x00100;
int b1 = c1 % 0x000100 - c2 % 0x000100;
return r1 * r1 + g1 * g1 + b1 * b1;
}
其次,您需要创建一个使用此" nearness"的排序函数。算法在主色列表中找到最接近的颜色。
public int FindClosestIndex(List<int> master, int color)
{
var idx = -1;
var idxCloseness = int.MaxValue;
for (var i = 0; i < master.Count; i++)
{
var closeness = Closeness(master[i], color);
if (closeness < idxCloseness)
{
idx = i;
idxCloseness = closeness;
}
}
return idxCloseness;
}
public int SortColorByMasterList(List<int> masterOrder, int a, int b)
{
return FindClosestIndex(masterOrder, a).CompareTo(FindClosestIndex(masterOrder, b));
}
你用它是这样的:
myList.Sort((a,b) => SortColorByMasterList(masterOrder, a, b));