将值pixel与int进行比较
compare value pixel with int
我有一个由distanceTransform
完成的Mat Dist
(CV_8U
)。
现在我必须检查Dist
的每个坐标是> 0
,并修改另一个Mat M = Mat :: zeros
的值
代码是
int main(){
....
for(i=0;i<Dist.rows;++i)
{
for(j=0;j<Dist.cols;++j)
{
if(Dist.at<uchar>(i,j) > 0){
M.at<uchar>(i,j)=2;
}
}
}
....
}
但我错了cv::exception。
我查看了文档和其他地方,试图将uchar更改为vec3b。我在visualstudio 2015中修改了异常,但没有修改。我哪里错了?
函数distanceTransform
不返回ad CV_8U,它是CV_32,正如我们在文档中看到的:
dst–输出具有计算距离的图像。它是一个32位与src大小相同的浮点单通道图像。
所以代码不应该读uchar,而应该读浮动
...
if(Dist.at<float>(i,j) > 0.f)
...
如果您使用距离变换的标签,在文档中我们有以下内容:
labels–可选输出2D标签阵列(离散Voronoi图表)。它的类型为CV_32SC1,大小与src相同。请参阅详细信息如下。
因此,在这种情况下,您应该将其作为int 访问
...
if(Dist.at<int>(i,j) > 0)
...
我希望这对你有帮助。
顺便说一下,也许ε值而不是0会更好。。。。
相关文章:
- 比较if语句中的数组值和int值
- 比较两个整数在C++中与未知 int 类型的相等性
- 与 string.size() 比较时 int 的符号性显示警告
- 错误:运算符 [] 不匹配。在比较列表中的 int 和 int 时<int>,
- 在 IF 语句中比较 int 时出现奇怪的行为
- std::<int>betterer() 比较器与 partial_copy_sort 的困难,在 Mac OSX 上"no matching function call.."
- 无符号int的比较始终是正确的(NPOS问题?)
- 有没有办法比较用 int 初始化的 char 类型的数组的 2 个元素
- 将 int 与 double 进行比较的预处理器"invalid integer constant expression"
- 为 map<int、pair<int、int 创建比较器>>
- 如何使用将 const int 的运算符用作 int* 优先级队列的比较器
- 比较int和double时出错
- 比较INT会产生奇怪的结果
- Visual Studio调试与发布版本:比较int和float不匹配
- 如何比较 int 和字符
- C++ 如何比较<int>从开始到最后一个元素的集合 -1
- 为什么我可以在C中赋值/比较int和char ?
- 比较int和unsigned引用时警告,但比较g++/msvc的const(无ref)时没有警告
- 比较 (int)double 和 (int)int 时出现异常
- 比较 (int)double 和 (int)int 时出现异常