对每个边缘求最小外接矩形,通过最小矩形提取每个边缘

来源:互联网 发布:linux可执行文件.o 编辑:程序博客网 时间:2024/05/17 02:25
#include <opencv2/opencv.hpp>#include <iostream>using namespace std;using namespace cv;int main(){Mat src; //源图像Mat tmp; //临时图像Mat dst_bw; //去掉背景后的目标二值图像Mat dst_contours;//轮廓图像src=imread("E:\\单板图片\\求孔洞数和孔洞面积\\aa.jpg");//未标题-1.jpg1-1.jpg  131.pngnamedWindow("原图");imshow("原图",src);cvtColor(src,dst_bw,CV_RGB2GRAY);threshold( dst_bw, dst_bw ,180, 255, CV_THRESH_BINARY);namedWindow("dst_bw");imshow("dst_bw",dst_bw);vector<vector<Point>> contours;vector<Vec4i> hierarchy;findContours(dst_bw,contours,CV_RETR_LIST,CV_CHAIN_APPROX_SIMPLE);drawContours(src,contours,-1,Scalar(0,255,0),8);for (int i=0;i<contours.size();i++){vector<Point> points;RotatedRect box=minAreaRect(Mat(contours[i]));Point2f vertex[4];box.points(vertex);for (int j=0;j<4;j++){line(src,vertex[j],vertex[(j+1)%4],Scalar(0,0,255),2,CV_AA);}Mat imgROI=src(Rect(vertex[1],vertex[3]));char image_name[30];sprintf(image_name, "%s_%d_%s", "roi",i, ".jpg");imwrite(image_name,imgROI);}imshow("效果图",src);waitKey(0);return 0;}


0 0
原创粉丝点击