p = img.ptr<uchar>(row);
for (var i = 0; i < nColumns - 3; i+=3) {
if(p[i] == b && p[i+1] == g && p[i+2] == r){
count++;
}
}
上面的代碼將顯然循環遍歷每一行並查看每個像素的值。然後在確認像素是某種顏色時,它會增加計數變量的值。OpenCV訪問像素的顏色值
我的困惑是:
- 如果
.ptr
表示指示器將矩陣的行的開始,怎麼可能在p
變量封裝? - 如果我們正在訪問像素的
b, g, r
(r,g,b)值 - 爲什麼我們正在查看矩陣的不同成員?矩陣的一行代表單個像素嗎?我認爲矩陣的一行表示圖像的對應行。
換句話說,爲什麼這個工作?
你的循環有一個錯誤:你正在遞增1('''++'''') - 你應該遞增3。你當前的實現不能正確地檢查顏色值。 – Freakyy
@Freakyy對不起。但我仍然不明白。你能回答我的問題嗎? – SR1
有3個頻道:rgb這就是爲什麼 – Asesh