求指点,drawcontours报错

#include<opencv2/opencv.hpp>
#include<iostream>
#include<vector>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
	Mat src = imread("5.jpg");
	if (!src.data)
	{
		printf("can not open file");
		return 0;
	}
	resize(src, src, Size(800, 800));
	imshow("原始图", src);
	Mat gray;
	cvtColor(src, gray, COLOR_BGR2GRAY);
	blur(gray, gray, Size(3, 3));
	imshow("灰度图", gray);
	Mat img;
	vector<vector<Point>>contours;
	vector<Vec4i>hi;
	threshold(gray, img, 160, 255, THRESH_BINARY);
	imshow("二值化", img);
	findContours(img, contours, hi, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE, Point(0, 0));
	vector<vector<Point>>contours_poly(contours.size());
	vector<Rect>boundRect(contours.size());
	vector<Point2f>center(contours.size());
	vector<float>radius(contours.size());
	for (int unsigned i = 0; i < contours.size(); i++)
	{
		Scalar color = Scalar(255, 0, 0);
		drawContours(img, contours_poly, i, color, 1, 8, vector<Vec4i>(), 0, Point());
		circle(img, center[i], 3, Scalar(255, 0, 0), -1, 8, 0);
		circle(img, center[i], (int)radius[i], Scalar(0, 0, 255), 2, 8, 0);

	}

	imshow("效果图", img);
	waitKey(0);
	return 0;
}

确认一下

#include<opencv2/opencv.hpp>

有没有写错。


void drawdContours(
InputOutputArray image,         //输入图像
InputArrayOfArrays contours,    //所有的输入轮廓
int contourIdx,                 //轮廓绘制的指示变量
const Scalar& color,            //轮廓的颜色
int thickness=1,                //轮廓线条的粗细度
int lineType=8,                 //线条的类型(默认8---8连通线性;4;LINE_AA----抗锯齿线型)
InputArray hierarchy=noArray(), //可选的层次结构信息(默认noArray())
int maxLevel=INT_MAX,           //表示用于轮廓绘制的最大等级(默认INT_MAX)
Point offset=Point()            //每个轮廓点的可选偏移量
);

看一下这个函数定义。

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

也许对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10993204.html

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y