#include "stdafx.h"
#include <iostream>
#include<string>
#include <stdio.h>
#include <cv.h>
#include <highgui.h>
#include <cxcore.h>
#include <stdio.h> using namespace std; int _tmain(int argc, _TCHAR* argv[])
{
IplImage* src=cvLoadImage("3.jpg",); IplImage* des=cvCreateImage(cvGetSize(src),src->depth,src->nChannels);
cvZero(des);
cvThreshold(src,src,,,CV_THRESH_BINARY);
CvMemStorage* memory=cvCreateMemStorage();
CvSeq* Icontour=NULL;
CvSeq* maxContour =NULL;
cvShowImage("原始图像1",src);
cvFindContours(src,memory,&Icontour, sizeof(CvContour),CV_RETR_LIST,CV_CHAIN_APPROX_SIMPLE,cvPoint(,));
double area=;
double maxArea=;
while(Icontour)
{
area=fabs(cvContourArea(Icontour,CV_WHOLE_SEQ));
cvDrawContours(src, Icontour,
CV_RGB(,,), CV_RGB(, ,),
, , , cvPoint(,)); if(area> && area<)
{ maxContour = Icontour;
}
Icontour =Icontour->h_next;
} cvDrawContours(des, maxContour,
CV_RGB(,,), CV_RGB(, ,), , , , cvPoint(,));
//CvRect rect=cvBoundingRect(maxContour,0);
CvBox2D box=cvMinAreaRect2(maxContour);
cout<<"长度: "<<box.size.width<<endl<<"宽度: "<<box.size.height;
//cvRectangle(src,cvPoint((rect.x-rect.height/2),(rect.y-rect.width/2)),cvPoint((rect.x+rect.height/2),(rect.y+rect.width/2)),cvScalar(255,255,255),1,8,0);
// cvRectangle(src,cvPoint((rect.x-rect.height/2),(rect.y-rect.width/2)),cvPoint((rect.x-rect.height/2),(rect.y-rect.width/2)),cvScalar(255,255,255),2,8,0);
// cvDrawCircle(src,cvPoint(box.center.x,box.center.y),box.size.height,cvScalar(255,255,255),2,8,0); CvPoint2D32f p4[];
cvBoxPoints(box,p4);
cvLine(des, cvPoint(cvRound(p4[].x), cvRound(p4[].y)),
cvPoint(cvRound(p4[].x), cvRound(p4[].y)), CV_RGB(, , ),); cvLine(des, cvPoint(cvRound(p4[].x), cvRound(p4[].y)),
cvPoint(cvRound(p4[].x), cvRound(p4[].y)), CV_RGB(, , ),); cvLine(des, cvPoint(cvRound(p4[].x), cvRound(p4[].y)),
cvPoint(cvRound(p4[].x), cvRound(p4[].y)), CV_RGB(,, ),); cvLine(des, cvPoint(cvRound(p4[].x), cvRound(p4[].y)),
cvPoint(cvRound(p4[].x), cvRound(p4[].y)), CV_RGB(, ,),); cvShowImage("原始图像",src);
cvShowImage("保留最大值",des);
cvWaitKey();
//cvReleaseImage(&src);
cvDestroyWindow("原始图像");
return ;
}

opencv——通过面积筛选最大轮廓,并求凸包矩形的长和宽的更多相关文章

  1. poj 3348:Cows(计算几何,求凸包面积)

    Cows Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 6199   Accepted: 2822 Description ...

  2. 编写一个Shape类,具有属性:周长和面积; 定义其子类三角形和矩形,分别具有求周长的方法。 定义主类E,在其main方法中创建三角形和矩形类的对象, 并赋给Shape类的对象a、b,使用对象a、b来测试其特性。

    package shape; public class Shape { //定义成员变量 private double zhouchang; private double mianji; public ...

  3. poj 2187:Beauty Contest(计算几何,求凸包,最远点对)

    Beauty Contest Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 26180   Accepted: 8081 D ...

  4. opencv —— boundingRect、minAreaRect 寻找包裹轮廓的最小正矩形、最小斜矩形

    寻找包裹轮廓的最小正矩形:boundingRect 函数 返回矩阵应满足:① 轮廓上的点均在矩阵空间内.② 矩阵是正矩阵(矩形的边界与图像边界平行). Rect boundingRect(InputA ...

  5. opencv的实用研究--分析轮廓并寻找边界点

    opencv的实用研究--分析轮廓并寻找边界点 ​      轮廓是图像处理中非常常见的.对现实中的图像进行采样.色彩变化.灰度变化之后,能够处理得到的是“轮廓”.它直接地反应你了需要分析对象的边界特 ...

  6. poj 3348 Cows 求凸包面积

    题目链接 大意: 求凸包的面积. #include <iostream> #include <vector> #include <cstdio> #include ...

  7. TZOJ 2392 Bounding box(正n边形三点求最小矩形覆盖面积)

    描述 The Archeologists of the Current Millenium (ACM) now and then discover ancient artifacts located ...

  8. HDU 1255 覆盖的面积(线段树:扫描线求面积并)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1255 题目大意:给你若干个矩形,让你求这些矩形重叠两次及以上的部分的面积. 解题思路:模板题,跟HDU ...

  9. [hdu5251]矩形面积 旋转卡壳求最小矩形覆盖

    旋转卡壳求最小矩形覆盖的模板题. 因为最小矩形必定与凸包的一条边平行,则枚举凸包的边,通过旋转卡壳的思想去找到其他3个点,构成矩形,求出最小面积即可. #include<cstdio> # ...

随机推荐

  1. 何用glmnet或lars包进行feature selection

    #datalibrary(lars)data(diabetes)attach(diabetes) #glmnetlibrary(glmnet)library(foreach)library(Matri ...

  2. Rhythmk 一步一步学 JAVA(7): jsp 自定义标签

    1.实现Tag接口: TagSupport类实现了Tag接口,为我们提供了4个重要的方法(见表6-5). 1.1. TagSupport类中的常用方法           int doStartTag ...

  3. vue引入jQuery、bootstrap

    vue引入jQuery.bootstrap 1.使用vue-cli构建的vue项目 2.npm安装jquery.bootstrap npm install jquery 3.修改build/webpa ...

  4. 关于BigDecimal类型在jsp页面中进行除法运算问题

    出自:http://blog.csdn.net/u011910290/article/details/52935337 问题描述: 在项目编写过程中,发现BigDecimal在jsp中进行除法运算时, ...

  5. C# 6 与 .NET Core 1.0 高级编程 - C# 6 的新功能

    个人原创译文,转载请注明出处.有不对的地方欢迎指出与交流. 英文原文:Professional C# 6 and .NET Core 1.0 - What’s New in C# 6 C# 6 的新功 ...

  6. short i=1;short i=i+1对或错,错的理由;short i+=1对或错,错的理由

    short i=1; i=i+1 i+=1 这是一个类型高级与低级的问题,前面的C是short型的,后面的1为int型的,short型与int型的相加得到short型是不可取,因为必须将int型转换为 ...

  7. 漂亮的表格样式–>使用CSS样式表控制表格样式

    依照WEB2.0风格,设计了几个表格样式,希望大家喜欢.WEB2.0提倡使用div开布局,但不是要完全放弃使用表格,表格在数据展现方面还是不错的选择.现在介绍使用CSS样式表来控制.美化表格的方法. ...

  8. plsql程序中循环语句的使用

  9. ShadowVolume

    [ShadowVolume] 1.z-pass 算法. z-pass 是 shadow volume 一开始的标准算法,用来确定某一个象素是否处于阴影当中.其原理是: Pass1:enable z-b ...

  10. Android APK反编译就这么简单 详解

    在学习Android开发的过程你,你往往会去借鉴别人的应用是怎么开发的,那些漂亮的动画和精致的布局可能会让你爱不释手,作为一个开发者,你可能会很想知道这些效果界面是怎么去实现的,这时,你便可以对改应用 ...