1)我有一个Matrix类
Mat src = imread("/pic.png", 0)
Run Code Online (Sandbox Code Playgroud)
http://i1265.photobucket.com/albums/jj502/anizilla/demo_result.png
我想将上面给出的图像中的所有白色像素替换为黑色.
有没有办法用特定的RGB值替换所有像素?
2)当我使用 -
src.col(0).row(0)
Run Code Online (Sandbox Code Playgroud)
我得到了正确的价值观.有没有办法提取每个RGB通道的值?
3)当我使用 -
src.at<Vec2b>(0,0)[0];
Run Code Online (Sandbox Code Playgroud)
我得到垃圾值(比如.和!).如果我使用,我会得到垃圾值<Vec2d>
但.我用的时候
src.at<Vec2s>(0,0)[0];
Run Code Online (Sandbox Code Playgroud)
我为频道0获得了适当的值,并且,
src.at<Vec2s>(0,0)[1];
src.at<Vec2s>(0,0)[2];
Run Code Online (Sandbox Code Playgroud)
返回垃圾数量
如果你做得对,这很简单.
使用显式模板实例化,例如
Mat3b src = imread("/pic.png", 0);
Run Code Online (Sandbox Code Playgroud)使用迭代器:
for (Mat3b::iterator it = src.begin(); it != src.end(); it++) {
if (*it == Vec3b(255, 255, 255)) {
*it = Vec3b(0, 0, 0);
}
}
Run Code Online (Sandbox Code Playgroud)对不起,第一个提议的解决方案(src.setTo(newMat, (src == old));)仅适用于单通道矩阵.
| 归档时间: |
|
| 查看次数: |
7438 次 |
| 最近记录: |