OpenCV 提取轮廓

#include "opencv2/imgproc/imgproc.hpp"    
#include "opencv2/highgui/highgui.hpp"    

#include <iostream>    

using namespace cv;
using namespace std;

int main(int argc, char** argv) {
	string filename[] = { "C:\\Users\\Administrator\\Desktop\\IMG_3454.jpg" };

	Mat in = imread(filename[0], 1);
	Mat img, gray, out, canny;
	in.copyTo(img);

	cvtColor(img, gray, COLOR_BGR2GRAY);
	in.copyTo(out);
	imshow("gray", gray);
	Canny(gray, canny, 80, 255);


	vector<vector<Point>> contours;
	findContours(canny, contours, CV_RETR_CCOMP, CV_RETR_FLOODFILL);

	drawContours(out, contours, -1, Scalar(0,255,0));

	for each (vector<Point> points in contours)
	{
		RotatedRect rRect = minAreaRect(points);
		Point2f vertices[4];      //定义矩形的4个顶点  
		rRect.points(vertices);   //计算矩形的4个顶点  
		for (int i = 0; i < 4; i++)
			line(out, vertices[i], vertices[(i + 1) % 4], Scalar(0, 255, 255));
	}

	for each (vector<Point> points in contours)
	{
		Rect rect = boundingRect(points);
		rectangle(out, rect, Scalar(255,0,0));
	}

	imshow("contours", out);
 
	waitKey(0);
	return 0;
}

转载于:https://my.oschina.net/wellsoschina/blog/1587464

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值