gpt4 book ai didi

c++ - 使用 opencv convexHul 获取给定点的面积。 - 点到垫转换期间发生错误

转载 作者:太空宇宙 更新时间:2023-11-03 23:05:42 45 4
gpt4 key购买 nike

我关注了this链接以制作点 vector 。为了计算给定点的面积,我使用了凸包。为此,我遵循了 this .当我尝试计算 convexHull 内的面积时,发生以下错误。正如我在将 vector 点转换为 Mat 后注意到的那样,没有深度。 CV_Assert(总计 >= 0 && (深度 == CV_32F || 深度 == CV_32S)); 我该如何克服这个问题。任何帮助表示赞赏。提前谢谢你。

#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
#include <math.h>
using namespace std;
using namespace cv;
int main()
{
vector<Point2d> originalPoints;
vector<Point2d> hull;
vector<Point2f> contour;
double epsilon = 0.001;

for(int dataPointCount=0; dataPointCount < 10; dataPointCount++)
{
cv::Point2d point;
point.x = 10 * ( (double)rand() / (double)RAND_MAX ) + 2; // just genarate random point
point.y = 5 * ( (double)rand() / (double)RAND_MAX ) + 2;
originalPoints.push_back(point);

}

convexHull(Mat(originalPoints) , hull , true);
approxPolyDP(Mat(hull), contour, 0.001, true);
cout << "====>"<< fabs(contourArea(Mat(contour)));

return 0;
}

错误

OpenCV Error: Assertion failed (total >= 0 && (depth == CV_32F || depth == CV_32S)) in convexHull, file /home/ve/workspace/opencv-3.3.0/modules/imgproc/src/convhull.cpp, line 136
terminate called after throwing an instance of 'cv::Exception'
what(): /home/ve/workspace/opencv-3.3.0/modules/imgproc/src/convhull.cpp:136: error: (-215) total >= 0 && (depth == CV_32F || depth == CV_32S) in function convexHull

最佳答案

错误意味着函数 convexHull 需要将点坐标存储为 float 而不是 double 。要克服这个问题,请将 vector 的定义更改为:

vector<Point2f> originalPoints;
vector<Point2f> hull;
vector<Point2f> contour;

关于c++ - 使用 opencv convexHul 获取给定点的面积。 - 点到垫转换期间发生错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57519209/

45 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com