【发布时间】:2018-02-07 10:29:53
【问题描述】:
我是 Opencv C++ 的新手。我正在尝试将蒙版与图像进行卷积。为此,我想创建自己的蒙版,以便可以使用 filter2D 数组函数将蒙版与图像进行卷积。我要创建的面具是:
char mask [3][3]= {{-1,0,1},{-1,0,1},{-1,0,1}};
为此,我尝试了以下代码(生成此掩码):-
Mat kernel(3,3, CV_8UC1, Scalar(-1,0,1));
我已将掩码值打印为
std::cout << kernel;
但我得到的答案是 0, 0, 0; 0, 0, 0; 0, 0, 0
我期待答案是 -1, 0, 1; -1, 0, 1; -1, 0, 1
我知道我在正确编写频道时犯了一个错误。谁能帮我理解通道(CV_8UC1....)的含义以及如何纠正它并获得正确的输出。
【问题讨论】:
-
Mat kernel(3,3, CV_8UC1, Scalar(-1,0,1));意味着,您将第一个通道设置为 -1,将第二个通道设置为 0,将第三个通道设置为 1。但是由于您只有一个通道矩阵,因此只使用第一个通道:-1。但是由于你有无符号类型,它会饱和到 0。所以你的示例图像的每个像素都是 0。