- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试从图像中绘制轮廓。我从我的网络摄像头得到了一个框架并提取了它的轮廓。然后,我按区域过滤它们,并调用 drawContours() 来显示它们。问题是当我尝试绘制过滤后的轮廓时...如果我绘制原始轮廓,一切正常。这是代码:
size_t contours_size=contours.size();
bool contour_is_valid[contours_size];
size_t filtered_contours=0;
size_t copied_contours=0;
size_t i;
double area;
for(i=0;i<contours_size;i++){
area=contourArea(contours.at(i),false);
if(area>minArea && area<maxArea){
contour_is_valid[i]=true;
filtered_contours++;
}
else{
contour_is_valid[i]=false;
}
}
area_filtered_contours.resize(filtered_contours);
for(i=0;i<contours_size;i++){
if(contour_is_valid[i]==true){
area_filtered_contours.at(copied_contours).resize(contours.at(i).size());
copy(contours.at(i).begin(),contours.at(i).end(),back_inserter(area_filtered_contours.at(copied_contours)));
copied_contours++;
}
}
contours 是 findContours() 的输出,因此,它是一个与 area_filtered_contours 相等的 vector< vector < Point >> 数据。我想要做的是生成另一个类似的结构,它在区域意义上具有有用的轮廓。然后
drawContours(cnt_img2,contours,_levels <= 0 ? 3 : -1, 255,1,8,hierarchy, std::abs(_levels) );
工作正常但是
drawContours(cnt_img2,area_filtered_contours,_levels <= 0 ? 3 : -1, 255,1,8,hierarchy, std::abs(_levels) );
给我一个断言错误。可能是什么问题?
提前致谢
费德里科
最佳答案
正如您的断言所说:OpenCV 错误:断言失败 (hierarchy.total() == ncontours && hierarchy.type() == CV_32SC4)
来自 findContours() (opencv.org) 的层次结构信息:可选输出 vector ,包含有关图像拓扑的信息。它具有与轮廓数量一样多的元素。
当您更改国家/地区的数量时,您还必须编辑层次结构。这是一个可选的输入。也编辑它或不使用它。
关于c++ - OpenCV:使用 drawContours() 断言失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23744045/
我有以下代码在 OpenCV 3.4.1 上运行良好,但现在不能在 OpenCV 4.1.0 上运行并给出错误。我不知道如何使代码适应新版本,你能帮我吗?非常感谢 def ImageProcessin
我从二值图像中过滤小 Blob (面积小于阈值的轮廓)。掩码是二值图像。 如果我注释行 drawContours(mask, contours, -1, Scalar(255), CV_FILLED
我正在尝试确定动脉的宽度,并制定了一个非常粗略的程序来验证 drawContours 是否合适。我的问题是轮廓仅打印黑色或白色线条,而不是我尝试使用的彩色线条。我不确定我正在绘制的 img 是否仅限于
在我的 Android 应用程序中,我从图库中获取了一张位图图像,内容如下 Bitmap bitm = getMyImage("Thanks!"); 我有一个名为 mat 的 Mat,声明如下: Ma
我想用 OpenCV drawContours 函数绘制自定义点序列。 我的代码: std::vector > contours; std::vector contour1; contour1.pus
我正在研究在 opencv python 中查找和绘制轮廓的示例。但是当我运行代码时,我只看到一个没有绘制轮廓的黑色窗口。我不知道我哪里错了。代码是: import numpy as np impor
我正在尝试使用 OpenCV 中的 cv2.drawContours 函数显示填充轮廓。我已经根据 Canny 检测得出的边缘图像开发了一个轮廓列表,并且正在为层次结构定义启用 RETR_EXTERN
我有一个要绘制的轮廓列表。其中一些轮廓自相交。 当我想用 OpenCV 绘制它们时,我只需使用 cv::drawContours 函数。 但是,这种行为很奇怪。 这里引用官方documentation
我遵循了 this page 上的教程但是当行 cv2.drawContours(im,contours,-1,(0,255,0),3) 被执行时,似乎什么也没有发生。我期待看到带有绿色轮廓的 sta
我正在尝试在 Xamarin 上开发移动应用程序。首先,我正在为 Android 设备做这件事。我希望 Oncamera 功能能够自动检测轮廓并测量物体的大小。作为主要步骤,我正在尝试实时检测轮廓。阅
需要堆栈溢出的强大帮助。实际上,我开发的应用程序必须通过 OCR(我正在使用 tesseract)文档进行分析,并提取我可以从中提取的所有文本。这是图像类型的示例: Image including t
我正在尝试从图像中绘制轮廓。我从我的网络摄像头得到了一个框架并提取了它的轮廓。然后,我按区域过滤它们,并调用 drawContours() 来显示它们。问题是当我尝试绘制过滤后的轮廓时...如果我绘制
我是在 Visual Studio 上使用 OpenCV 的新手,最近我重新安装了我的 VS2012 以使其使用 OpenCV 2.4.2 工作。 我正在尝试通过鼠标单击顶点并将它们推送到 CvSeq
我有一个 python 代码,我正在将它移植到 c++。我在 OpenCV c++ 中遇到了 drawContours 函数的奇怪问题。 self.contours[i] = cv2.convexHu
这个问题在这里已经有了答案: Contour shows dots rather than a curve when retrieving it from the list, but shows t
我有以下图像,其中包含无人机捕获的汽车和空 parking 位。我想检测空的公园空间并绘制一个看起来像预期图像的框。 这是我的代码: import cv2 import numpy as np fro
我有一个包含 4 个点的 vector : vector > data(4); data[0].push_back(Point(0,0)); data[1].push_back(Point(0,120
我试图找到最大的正方形并将其绘制在原始图像上。 当我打电话 drawContours(input,(screenCnt),-1,Scalar(255,0,0),3); 出现以下错误: E/cv::er
我正在尝试绘制最大物体的轮廓。 首先,我将展示一张绘制所有轮廓的图像: 为了找到最大的对象,我使用了这段代码: maxsize = 0 best = 0 count = 0 for cnt in
按照@Silencer 的建议,我使用了他发布的代码 here围绕我图像中的数字绘制轮廓。在某些时候,处理像 0,6,8,9 这样的数字时,我看到它们的内部轮廓(圆圈)也被填充了。我怎样才能防止这种情
我是一名优秀的程序员,十分优秀!