簡體   English   中英

替換C ++矩陣類中特定顏色的所有像素

[英]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];

返回垃圾數量

如果你做得對,這很簡單。

  1. 使用顯式模板實例化,例如

     Mat3b src = imread("/pic.png", 0); 
  2. 使用迭代器:

     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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM