opencv 矩形边框 boundingRect minAreaRect approxPolyDP

这篇具有很好参考价值的文章主要介绍了opencv 矩形边框 boundingRect minAreaRect approxPolyDP。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

#include "iostream"
#include "opencv2/opencv.hpp"

using namespace std;
using namespace cv;

int main()
{
	Mat  img, temp, temp2,dst, dstbin, distancetransform,rel, rel2,gary, _threshold, temp3;

	img = imread("shou.jpg");

	resize(img, dst, Size(0, 0), 0.1, 0.1);
	dst.copyTo(temp3);

	cvtColor(dst, gary, COLOR_BGR2GRAY);

	threshold(gary, _threshold, 100, 255, THRESH_TOZERO);
	GaussianBlur(_threshold, temp2, Size(7, 7), 5, 0);
	Mat canny;
	Canny(temp2, canny, 80, 160, 3, false);

	Mat kernel = getStructuringElement(1, Size(3, 3));

	//erode(canny, canny, kernel);
	dilate(canny, canny, kernel);

	vector<vector<Point>> contours;
	vector<Vec4i> hierarchy;
	findContours(canny, contours, hierarchy, 0, 2, Point());

	for (int i = 0; i < contours.size(); i++)
	{
		Rect rect = boundingRect(contours[i]);
		RotatedRect rotatedrect = minAreaRect(contours[i]);
		Point2f _points[4];
		rotatedrect.points(_points);

		Point2f cen = rotatedrect.center;

		circle(dst, cen, 3, Scalar(255, 0, 0));

		//rectangle(dst, rect, Scalar(0, 255, 0));

		for (int j = 0; j < 4; j++)
		{
			if (j == 3)
			{
				line(dst, _points[j], _points[0], Scalar(0, 0, 255));
				break;
			}
			line(dst, _points[j], _points[j + 1], Scalar(0, 0, 255));
		}
		Mat po;
		approxPolyDP(contours[i], po, 4, true);
		for (int n = 0; n < po.rows; n++)
		{
			if (n == po.rows - 1)
			{
				Vec2i vec1 = po.at<Vec2i>(n);
				Vec2i vec2 = po.at<Vec2i>(0);
				line(temp3, vec1, vec2, Scalar(255, 0, 255));
				break;
			}
			Vec2i vec11 = po.at<Vec2i>(n);
			Vec2i vec22 = po.at<Vec2i>(n+1);
			line(temp3, vec11, vec22, Scalar(255, 0, 255));
		}
	}
	imshow("dst", dst);
	imshow("temp3", temp3);
	imshow("canny", canny);

	waitKey(0);

	return 1;
}

opencv 矩形边框 boundingRect minAreaRect approxPolyDP,Opencv,opencv,人工智能,计算机视觉文章来源地址https://www.toymoban.com/news/detail-605104.html

到了这里,关于opencv 矩形边框 boundingRect minAreaRect approxPolyDP的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 关于OpenCV中minAreaRect角度记录

    最近看到stackflow关于minAreaRect的讨论: MinAreaRect angles - Unsure about the angle returned OpenCV’s RotatedRect angle does not provide enough information 大概问题是minAreaRect这个接口返回的角度信息不足以反映返回的旋转矩形的旋转信息,例如返回角度为30度,那它到底是下面图中的哪一个呢? 那有

    2024年02月14日
    浏览(40)
  • OpenCV的cv2.minAreaRect解析

    在这个文章中,我们将学习如何在感兴趣区域周围画最小面积矩形框。 下图显示了两个矩形框,绿色的是普通矩形框,红色的是最小面积矩形框。可以发现,红色的是旋转矩形。 OpenCV提供了一个函数cv2.minAreaRect来寻找最小面积的旋转矩形。将2D点集作为输入,并返回一个Bo

    2024年01月19日
    浏览(48)
  • OpenCV边缘检测:findContours()、approxPolyDP()

    参数 src 原图 cv2.RETR_TREE:提取轮廓后,输出轮廓信息的组织形式,除了cv2.RETR_TREE还有以下几种选项: cv2.RETR_EXTERNAL:输出轮廓中只有外侧轮廓信息; cv2.RETR_LIST:以列表形式输出轮廓信息,各轮廓之间无等级关系; cv2.RETR_CCOMP:输出两层轮廓信息,即内外两个边界(下面将会

    2024年02月06日
    浏览(40)
  • css矩形盒子实现虚线流动边框+css实现step连接箭头

    由于项目里需要手写步骤条 且实现指定状态边框虚线流动效果,故使用css去绘制步骤条连接箭头和绘制边框流动效果 效果:

    2024年02月07日
    浏览(39)
  • 详细解释opencv python中的 cv.approxPolyDP

    在OpenCV Python中,cv.approxPolyDP是一个用于多边形逼近的函数。它使用Douglas-Peucker算法来减少多边形的点数。 该函数需要两个参数:输入多边形和一个表示逼近精度的参数。输入多边形是一个由点组成的数组,而逼近精度是一个用于控制轮廓近似的精度参数。 该函数在输入多边

    2024年02月11日
    浏览(36)
  • [C++] opencv - approxPolyDP(多边形拟合)函数介绍和使用场景

    OpenCV中的 approxPolyDP() 函数用于对形状进行逼近,以减少多边形的顶点数,可以用于对图像轮廓点进行多边形拟合。 函数原型如下: 其中, curve 是输入的点集,类型为 InputArray, 可以是 Mat 、 vectorPoint 等; approxCurve是输出的点集,类型为 OutputArray, 也是 Mat 类型; epsilon 是精

    2024年03月14日
    浏览(65)
  • OpenCV每日函数 结构分析和形状描述符(9) ApproxPolyDP函数 拟合曲线

            也称为 Ramer-Douglas-Peucker 算法 或 迭代端点拟合算法, 是一种通过减少点数来平滑折线(由线性线段组成的线)的算法。简化曲线应保留原始曲线的粗略形状,但仅包含定义原始曲线的点的子集。         粗化程度由单个参数 ε 控制,该参数定义原始点和简化

    2024年02月20日
    浏览(47)
  • 【OpenCV 例程 300篇】223. 特征提取之多边形拟合(cv.approxPolyDP)

    『youcans 的 OpenCV 例程200篇 - 总目录』 目标特征的基本概念 通过图像分割获得多个区域,得到区域内的像素集合或区域边界像素集合。我们把感兴趣的人或物称为目标,目标所处的区域就是目标区域。 特征通常是针对于图像中的某个目标而言的。图像分割之后,还要对目标区

    2024年02月04日
    浏览(48)
  • opencv(12):cv::rectangle学习与代码演示,使用opencv画矩形/矩形框

    1.1 功能:         绘制一个简单的、粗的或填充的直角矩形或直角矩形框。 1.2 c++代码形式 rectangle() [1/2] img     图像。 pt1      矩形的顶点。 pt2      与 pt1 相对的矩形的顶点。意思是pt1和pt2是对角顶点 color   颜色或亮度(灰度图像)。 thickness     构成矩形的线

    2024年02月03日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包