首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >值像素与int的比较

值像素与int的比较
EN

Stack Overflow用户
提问于 2016-04-06 09:55:37
回答 1查看 276关注 0票数 0

我有一个Mat Dist (CV_8U)由distanceTransform做的。

现在我必须检查Dist的每个坐标是> 0,并修改另一个Mat M = Mat :: zeros的值。

代码是

代码语言:javascript
复制
      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。我修改了visual studio 2015中的异常,但没有修改。我哪里错了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-06 10:49:43

函数distanceTransform不返回ad CV_8U,正如我们在文档中看到的那样,它是CV_32。

dst -输出具有计算距离的图像。这是一个32位浮点,单通道图像的大小与src .

因此,代码不应该读取uchar,而应该浮动。

代码语言:javascript
复制
...
if(Dist.at<float>(i,j) > 0.f)
...

如果您使用了距离转换的标签,在文档中我们有以下内容:

标签-可选输出二维标签数组(离散Voronoi图)。它的类型为CV_32SC1,大小与src相同。详情见下文。

因此,在这种情况下,您应该以int的形式访问它。

代码语言:javascript
复制
...
if(Dist.at<int>(i,j) > 0)
...

希望这能帮到你。

顺便说一句,也许用epsilon值代替0会更好.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36447641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档