CPP OpenCV - 尝试根据边缘裁剪图像

时间:2017-10-19 16:06:02

标签: c++ opencv edge-detection

我需要根据找到的边缘(使用给定的epsilon)裁剪图像

我遵循以下说明: Opencv c++ detect and crop white region on image

一次改变 - 我试图根据我从canny边缘探测器收到的边缘图像找到矩形:

<% @post.comments.each do |comment| %>

我遇到的问题是,当我到达#139列时,它崩溃了以下异常:

  

Microsoft C ++异常:cv ::内存位置的异常   0x000000EB35DEF170。

但是当我使用原始图像(而不是边缘图像)时,它按预期工作。

任何想法? 我想要的是根据图像的边缘裁剪而不是实际的图像

由于

1 个答案:

答案 0 :(得分:1)

Canny结果是一个8位单通道二进制图像。您使用Vec3i访问像素值;这意味着你假设图像是一个8位3通道图像,这是不正确的。尝试:

if(edges.at<uchar>(j,i) != 0)
{
    nonBlackList.push_back(cv::Point(i,j));
}