opencv之求各连通区域内目标的最小外接矩形及其长、宽
更新时间:2023-06-02 15:10:01 阅读量: 实用文档 文档下载
- opencv连通区域检测推荐度:
- 相关推荐
这是基于opencv的函数,包含图像二值化,最小外接矩形求法,及最小外接矩阵的长和宽,按照自己思路不一定规范,还望指正。
10、最小外接矩形及长宽的求法 liuqingjie2@ #include "cv.h"
#include "highgui.h"
#include <stdio.h>
#include <math.h>
#include "otsu.h"
int main(int argc,char** argv)
{
IplImage *src,*gray,*bw,*dst;
CvMemStorage* storage=cvCreateMemStorage(0); CvSeq* contour=0;
char* filename=argc==2?argv[1]:"5.jpg";
if(!filename)
printf("can't open the file:%d\n",filename);
src=cvLoadImage(filename,1);
cvNamedWindow("image",1);
cvShowImage("image",src);
gray=cvCreateImage(cvSize(src->width,src->height),src->depth,1); cvCvtColor(src,gray,CV_BGR2GRAY);
hei=gray->height;//注意此处是gray,otsu中要用到hei,wid,已在otsu.h中全局定义;
wid=gray->width;
printf("图像的高为:%d,宽为:%d\n\n",hei,wid);
这是基于opencv的函数,包含图像二值化,最小外接矩形求法,及最小外接矩阵的长和宽,按照自己思路不一定规范,还望指正。
cvNamedWindow("image2",1);
cvShowImage("image2",gray);
bw=cvCreateImage(cvGetSize(src),IPL_DEPTH_8U,1); otsu(gray,bw);
cvNamedWindow("image4",1);
cvShowImage("image4",bw);
// wb=cvCloneImage(bw);
// cvNot(bw,wb); 只有当目标区域为黑色背景时候,才对其取反。
dst=cvCloneImage(src);
cvFindContours(bw,storage,&contour,sizeof(CvContour),CV_RETR_CCOMP,CV_CHAIN_APPROX_SIMPLE);
for(;contour!=0;contour=contour->h_next)
{ CvBox2D rect=cvMinAreaRect2(contour,storage);
CvPoint2D32f rect_pts0[4];
cvBoxPoints(rect, rect_pts0);
//因为cvPolyLine要求点集的输入类型是CvPoint**
//所以要把 CvPoint2D32f 型的 rect_pts0 转换为 CvPoint 型的 rect_pts
//并赋予一个对应的指针 *pt
int npts = 4,k=0;
int aaa=0,bbb=0;
CvPoint rect_pts[4], *pt = rect_pts;
这是基于opencv的函数,包含图像二值化,最小外接矩形求法,及最小外接矩阵的长和宽,按照自己思路不一定规范,还望指正。
printf("连通区域最小外接矩形顶点坐标分别为:\n");
for (int i=0; i<4; i++)
{
rect_pts[i]= cvPointFrom32f(rect_pts0[i]);
printf("%d %d\n",rect_pts[i].x,rect_pts[i].y);
aaa=(int)sqrt((pow((rect_pts[0].x-rect_pts[1].x),2)+pow((rect_pts[0].y-rect_pts[1].y),2)));
bbb=(int)sqrt((pow((rect_pts[0].x-rect_pts[3].x),2)+pow((rect_pts[0].y-rect_pts[3].y),2)));
if(aaa<bbb)
{
k=aaa;
aaa=bbb;
bbb=k;
}
}
printf("最小外接矩形的长为:%d,宽为:%d。\n\n",aaa,bbb);
//chang=rect_pts[0]-rect_pts[3];
//kuan=rect_pts[0]-rect_pts[1];
//printf("最小外接矩形的长为:%d,宽为:%d\n",chang,kuan);
//画出Box
cvPolyLine(dst, &pt, &npts, 1, 1, CV_RGB(255,0,0), 1);
}
cvNamedWindow("image5",1);
cvShowImage("image5",dst);
这是基于opencv的函数,包含图像二值化,最小外接矩形求法,及最小外接矩阵的长和宽,按照自己思路不一定规范,还望指正。
cvWaitKey(0);//注意此句放的位置,放的不对则。。。
cvDestroyWindow("image");
cvDestroyWindow("image2");
cvDestroyWindow("image4");
cvDestroyWindow("image5");
cvReleaseImage(&src);
cvReleaseImage(&gray);
cvReleaseImage(&bw);
cvReleaseImage(&dst);
return 0;
}
正在阅读:
opencv之求各连通区域内目标的最小外接矩形及其长、宽06-02
100101100云和综合中学高三语文备课组高考备考策略09-28
论我国夫妻约定财产制06-19
心肺复苏理论考试05-17
图管理系统的设计与实现设计05-17
镇区自建自住商住楼、住宅楼(单体1000平方米以下)建设工程验收表10-26
政治学概论1至12章(自考本科)03-27
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 之求
- 矩形
- 连通
- 最小
- 区域
- 及其
- 目标
- opencv
- 纸盒设计 二、材料工艺,三、设计依据、方法、程序
- 初中一年级语文下册《白鹅》导学案语文版
- 涵洞(通道)施工作业指导书
- 人防工程质量监督内业清单
- 4.10.2 做诚信的人(人教版八上)
- 七年级下册文言文复习(人教版)
- Sarason考试焦虑量表
- 中国特色社会主义理论与实践研究教学大纲
- (中国科学院)海洋生物技术成果汇编
- 施工测量放线报验单2
- 浅谈新时期司法警察执法形象
- 华中师大《教育心理学》期末考试备考资料全集题及答案建设
- 26岁女孩爱上“水中花” 痴迷钻研辞优厚工作
- 20031027增员大未来
- 施氮和耕作方式对红麻福红992农艺性状和产量的影响
- 人力资源管理--张兴华---说课版
- 公务员考试常识4000题
- 《灵枢&183;经筋》篇经义初探
- 北京市2021版七年级下学期数学期中考试试卷D卷
- 关务基础知识介绍