1 回答

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超2個(gè)贊
你的問題有幾個(gè)問題。
首先color_map只有 5 個(gè)元素,但預(yù)期結(jié)果的索引從 0 到 5(6 個(gè)元素),我認(rèn)為這是一個(gè)錯(cuò)誤,你只需要真正的索引。
其次,您的代碼中沒有index分配的值,所以我假設(shè)它是下一個(gè)可用索引,并改用push屬性。
由于您實(shí)際上不想返回多維數(shù)組,而只想返回二維索引數(shù)組,因此返回imageData.
考慮到您在評(píng)論部分解釋的條件,即顏色映射值將是您唯一可以嘗試做的事情:
const color_map = [[255,255,0], [255,0,0], [0,255,255], [0,255,0], [0,0,0]];
function form_2D_label(mat) {
const image = mat.cvtColor(cv.COLOR_BGR2RGB);
const imageBuffer = mat.getData();
const ui8 = new Uint8Array(imageBuffer);
const imageData = [];
for (let i = 0; i < ui8.length; i += 3) {
imageData.push([ui8[i], ui8[i + 1], ui8[i + 2]]);
console.log(imageData[imageData.length - 1])
}
return [imageData.map(el => color_map.findIndex(color => arrayEquals(color, el)))];
}
function arrayEquals(array1, array2) {
for (let i = 0, l = array2.length; i < l; i++) {
if (array2[i] !== array1[i]) return false;
}
return true;
}
添加回答
舉報(bào)