gpt4 book ai didi

opencv - 在 OpenCv 中创建自定义的 CvPoint 序列

转载 作者:太空宇宙 更新时间:2023-11-03 22:34:57 25 4
gpt4 key购买 nike

我想使用 cvDrawContours 绘制我自己从 CvSeq 创建的轮廓(通常,轮廓是从 OpenCV 的其他函数返回的)。这是我的解决方案,但它不起作用:(

IplImage*    g_gray    = NULL;

CvMemStorage *memStorage = cvCreateMemStorage(0);
CvSeq* seq = cvCreateSeq(0, sizeof(CvSeq), sizeof(CvPoint)*4, memStorage);


CvPoint points[4];
points[0].x = 10;
points[0].y = 10;
points[1].x = 1;
points[1].y = 1;
points[2].x = 20;
points[2].y = 50;
points[3].x = 10;
points[3].y = 10;

cvSeqPush(seq, &points);

g_gray = cvCreateImage( cvSize(300,300), 8, 1 );

cvNamedWindow( "MyContour", CV_WINDOW_AUTOSIZE );

cvDrawContours(
g_gray,
seq,
cvScalarAll(100),
cvScalarAll(255),
0,
3);

cvShowImage( "MyContour", g_gray );

cvWaitKey(0);

cvReleaseImage( &g_gray );
cvDestroyWindow("MyContour");

return 0;

我从这篇文章中选择了从 CvPoint 创建自定义轮廓序列的方法 OpenCV sequences -- how to create a sequence of point pairs?

第二次尝试,我用 Cpp OpenCV 做了:

vector<vector<Point2i>> contours;
Point2i P;
P.x = 0;
P.y = 0;
contours.push_back(P);
P.x = 50;
P.y = 10;
contours.push_back(P);
P.x = 20;
P.y = 100;
contours.push_back(P);

Mat img = imread(file, 1);
drawContours(img, contours, -1, CV_RGB(0,0,255), 5, 8);

也许我错误地使用了数据。编译器警告错误并且不允许 push_back 指向这样的向量。为什么??

错误是这样的:错误 2 error C2664: 'std::vector<_Ty>::push_back' : 无法将参数 1 从 'cv::Point2i' 转换为 'const std::vector<_Ty> &'

最佳答案

我终于完成了。

Mat g_gray_cpp = imread(file, 0);  

vector<vector<Point2i>> contours;
vector<Point2i> pvect;
Point2i P(0,0);

pvect.push_back(P);

P.x = 50;
P.y = 10;
pvect.push_back(P);

P.x = 20;
P.y = 100;
pvect.push_back(P);

contours.push_back(pvect);

Mat img = imread(file, 1);

drawContours(img, contours, -1, CV_RGB(0,0,255), 5, 8);

namedWindow( "Contours", 0 );
imshow( "Contours", img );

因为 'contours' 是向量>,contours.push_back(var) -> var 应该是向量

谢谢!我发现了一个错误

关于opencv - 在 OpenCv 中创建自定义的 CvPoint 序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9445200/

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