我當前想要將某些值讀入一個3通道480行640列矩陣的8位無符號整數值。我初始化矩陣是這樣的:OpenCV Mat類:訪問多通道矩陣的元素
聲明:
rgbMatrix = Mat::zeros(480,640,CV_8UC3);
當我試圖通過我無法分配整個矩陣迭代/使用下面的方法搶值。值簡單地留0.我的代碼看起來是這樣的:
for (int i = 0; i < rgbMatrix.rows; i++)
{
for (int j = 0; j < rgbMatrix.cols; j++)
{
(rgbMatrix.data + rgbMatrix.step * i)[j * rgbMatrix.channels() + 0] = *value0*;
(rgbMatrix.data + rgbMatrix.step * i)[j * rgbMatrix.channels() + 1] = *value1*;
(rgbMatrix.data + rgbMatrix.step * i)[j * rgbMatrix.channels() + 2] = *value2*;
}
}
然而,當我聲明瞭三個獨立的1信道矩陣(也行480通過柱8 640位無符號整數值),並嘗試訪問的元素這些矩陣下面的代碼工作:
聲明:
rgbMatrix0 = Mat::zeros(480,640,CV_8UC1);
rgbMatrix1 = Mat::zeros(480,640,CV_8UC1);
rgbMatrix2 = Mat::zeros(480,640,CV_8UC1);
for (int i = 0; i < rgbMatrix0.rows; i++)
{
for (int j = 0; j < rgbMatrix0.cols; j++)
{
(rgbMatrix0.data + rgbMatrix0.step * i)[j] = *value0*;
(rgbMatrix1.data + rgbMatrix1.step * i)[j] = *value1*;
(rgbMatrix2.data + rgbMatrix2.step * i)[j] = *value2*;
}
}
現在,我想用這些行動只是一個矩陣,具有跟蹤三個獨立的變量會得到一段時間後煩人。我有一種感覺,我沒有訪問三通道矩陣的正確內存點。有誰知道我如何能夠完成我在第二部分代碼中所做的工作,但是使用一個三通道矩陣而不是三個單獨的單通道矩陣?
謝謝。