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];
返回垃圾编号
答案 0 :(得分:6)
如果你做得对,这很简单。
使用显式模板实例化,例如
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));
)仅适用于单通道矩阵。