#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. 第一章 : Android Studio 介绍 [Learn Android Studio 汉化教程]

    摘自:http://ask.android-studio.org/?/question/789,为便于学习重新整理.. 本章将引导您完成安装和设置开发环境,然后你就可以跟随本书的例子和课程学习. 首先 ...

  2. redis hash结构如何设置过期时间

    Redis中有个设置时间过期的功能,即通过setex或者expire实现,目前redis没有提供hsetex()这样的方法,redis中过期时间只针对顶级key类型,对于hash类型是不支持的,这个时 ...

  3. 前端基础——jQuery

    一 jQuery 1 简介 jQuery是一个“写得更少,但做得更多”的轻量级JavaScript库.jQuery极大地简化了JavaScript编程. 它是轻量级的js库(压缩后只有21k) ,这是 ...

  4. 关于微信支付URL未注册其中的坑THINKPHP5

    1 微信支付是区分大小写的 TP有的URL 会默认转换 http://ams.###.com/index/Pay/wechat/order_number/ 会被解析 http://ams.###.co ...

  5. [z]IE6各种不兼容问题

    http://blqw1.diandian.com/post/2012-01-12/16137399 http://www.cnblogs.com/qiangspecial/archive/2013/ ...

  6. java获取取前段页面的参数

    request.getParameter("tnumber") document.forms[0].s_id.value;

  7. Spring+Log4j的集成总结

    导入依赖的jar包 <log4j.version>1.2.16</log4j.version> <!-- 自动引入slf4j-api.jar,log4j.jar,以及sl ...

  8. OrderedDict 有序字典以及读取json串时如何保持原有顺序

    1. OrderedDict 有序字典 OrderedDict是dict的子类,它记住了内容添加的顺序.比较时,OrderedDict要内容和顺序完全相同才会视为相等 import collectio ...

  9. IPHONE 64位和32位

    参考段一:iPhone 5没有64位的,只有32位架构,苹果是从iPhone 5s开始对全线移动产品使用64位架构.iPhone 5s发布之后的所有产品都是64位的使用LUAJIT或LUAC都可以对L ...

  10. 【310】◀▶ Python 日期和时间

    参考: python 时间日期计算 Python 日期和时间(菜鸟教程) 8.1. datetime — Basic date and time types python中datetime模块中dat ...