2017-01-17 28 views
0

我一直在試圖這樣做是爲了像素的集合設置爲紅色:我可以在OpenCV中將像素集合設置爲(R,G,B)值嗎?

for(j=0;j<180;j++){ 
    for(i=0;i<180;i++){ 
    cv::Vec3b color =frame.at<cv::Vec3b>(j,i); 
    color[0]=0; 
    color[1]=0; 
    color[2]=255; 
    frame.at<cv::Vec3b>(j,i) = color; 
    } 
} 

Instead it results in this

我得到RGB風格層一樣,如果你看了CRT電視非常接近,你會看到什麼。如果我想將特定像素設置爲RGB值,我該如何做?我很可能在做一些非常愚蠢的事情:(如果你認爲我可以提供更多的信息來幫助請讓我知道我對此很陌生:)

+0

如果你有這樣的功能['賦值運算符'](http://docs.opencv.org/trunk/d3/d63/classcv_1_1Mat.html#aa5c947f7e449a4d856a4f3a87fcebd50),[[' (http://docs.opencv.org/trunk/d3/d63/classcv_1_1Mat.html#a0440e2a164c0b0d8462fb1e487be9​​876)和多種方式[提取子矩陣](http://docs.opencv.org/trunk/d3/代表您的ROI的d63/classcv_1_1Mat.html#ad543b6bd296ae1247032c750af4718e1)。 –

+0

@DanMašek我認爲有這樣做的功能,謝謝指出他們!好奇心有時會得到我最好的:) – Joey

回答

0

輸入(在你的案例中的幀)不是CV_8UC3 type.It必須是CV_8UC4,這就是爲什麼RGB圖案在結果圖像中重複,因爲未引用的第四通道會導致每個像素髮生一個字節移位。您必須使用Vec4b而不是Vec3b才能獲得正確的結果。

+0

所以我認爲會有一個紅色,藍色,綠色的頻道......但第四頻道是什麼? – Joey

+0

通常是一個alpha通道(即透明度)。如果你發佈圖像的載入方式(可能是你的電話),這將有助於追蹤它。 –

+0

@hariprasad有沒有一個頁面,你會推薦我看看這樣的東西返回類型?它可能在3.2.0已有的文檔中,但我不知道在哪裏可以找到它。 – Joey

相關問題