[英]Replace all pixels of a particular color in a C++ matrix class
1)我有一個Matrix類
Mat src = imread("/pic.png", 0)
http://i1265.photobucket.com/albums/jj502/anizilla/demo_result.png
我想將上面給出的圖像中的所有白色像素替換為黑色。
有沒有辦法用特定的RGB值替換所有像素?
2)當我使用 -
src.col(0).row(0)
我得到了正確的價值觀。 有沒有辦法提取每個RGB通道的值?
3)當我使用 -
src.at<Vec2b>(0,0)[0];
我得到垃圾值(比如.
和!
)。 如果我使用<Vec2d>
我會得到垃圾值
但。 我用的時候
src.at<Vec2s>(0,0)[0];
我為頻道0獲得了適當的值,並且,
src.at<Vec2s>(0,0)[1];
src.at<Vec2s>(0,0)[2];
返回垃圾數量
如果你做得對,這很簡單。
使用顯式模板實例化,例如
Mat3b src = imread("/pic.png", 0);
使用迭代器:
for (Mat3b::iterator it = src.begin(); it != src.end(); it++) { if (*it == Vec3b(255, 255, 255)) { *it = Vec3b(0, 0, 0); } }
對不起,第一個提出的解決方案( src.setTo(newMat, (src == old));
)僅適用於單通道矩陣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.