opencv检测图像中的矩形(opencv 特征提取)

技术opencv3.0识别并提取图形中的矩形的方法是什么这篇文章将为大家详细讲解有关opencv3.0识别并提取图形中的矩形的方法是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有

本文将详细解释opencv3.0如何识别和提取图形中的矩形。这篇文章的内容质量很高,所以边肖会分享给大家参考。希望你看完这篇文章后有所了解。

使用opencv识别图片中的矩形。

其中遇到的主要问题是矩形内部的形状导致轮廓不闭合。

1.高斯滤波输入灰度图像2。制作灰度直方图,提取阈值和二值化3。提取图像的轮廓4。识别图像5中的矩形。提取图像中的矩形。

1.对输入灰度图像进行高斯滤波。

CV : mat src=CV : im read(' f : \ \ t 13 . BMP ',CV _ BGR2GRAY);cv:Mat hsvgaussianbulr(src,hsv,cv :3360 size(5,5),0,0);

2.制作灰度直方图,提取阈值,做二值化。

给定图片,背景为黑色,矩形的背景颜色为灰色,矩形中的其他一些形状为白色。可以称为:提取轮廓时,矩形的外轮廓不闭合。因此,我们需要对整个画面做一个灰度直方图,找到阈值并进行二值化。

把手。也就是说,如果像素值(黑色)小于阈值,将其设置为0(纯黑色);如果像素值(灰色和白色)大于阈值,则设置

设置为255(白色)

//将灰度量化到30级int gbins=16int HistSize[]={ gbins };

//灰度从0到256浮动灰度[]={0,256 };

const float * ranges[]={ granges };cv:MatND和hist

//我们从第0个和第1个通道计算直方图int channel[]={ 0 };

//计算hist calcHist(hsv,1,通道,cv:Mat(),

//不要使用掩码hist,1,histSize,ranges,true,

//直方图均匀假);

//求hist double maxVal=0的最大值;

minMaxLoc(hist,0,maxVal,0,0);int scale=20

cv:Mat毫安时组织;

histImg.create(500,gbins*scale,CV _ 8UC 3);

//显示hist图像的灰度(int g=0;ggbinsg ){

float binVal=hist.atfloat(g,0);

int intensity=cvRound(BinVal * 255);

矩形(组图,cv:Point点(g *比例尺,0),

CV : point((g ^ 1)* scale-1,binVal/maxVal*400),CV_RGB(0,0,0),CV _ FILLED);} cv : im show(' Histmg ',Histmg);

//阈值处理cv:Mat hsvRe

阈值(hsv,hsvRe,64,255,cv : thresh _ BInary);

3.提取图片的轮廓

为了识别图片中的矩形,在识别之前需要提取图片的轮廓。经过滤波和二值化后,轮廓提取后的效果比提取前好得多。

识别矩形

矩形识别的条件是:图片中识别出的轮廓是四个顶角的凸边形状,所有顶角的角度都是90度。

矢量点约;for(size _ t I=0;I等高线. size();I){ 0

近似值(Mat(等高线[i]),近似值,弧长(Mat(等高线[i]),真)*0.02,真);

if(约大小()==4个晶圆厂(contourArea(Mat(约)))1000 iscon sourconvex(Mat(约))){ doublemax余弦=0;

for(int j=2;j5;j ) {双余弦=fabs(角度(约[j%4],约[j-2],约[j-1]);

最大余弦=最大(最大余弦,余弦);}

if(最大余弦值0.3)平方,push_back(近似值);

} }

opencv3.0中识别和提取图形中矩形的方法是什么,希望在这里分享

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/147367.html

(0)

相关推荐

  • 如何使用php工厂模式

    技术如何使用php工厂模式这篇文章主要介绍“如何使用php工厂模式”,在日常操作中,相信很多人在如何使用php工厂模式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用php工厂模式”

    攻略 2021年10月22日
  • Vue中Watcher和Scheduler的实现原理是什么

    技术Vue中Watcher和Scheduler的实现原理是什么这篇文章主要介绍“Vue中Watcher和Scheduler的实现原理是什么”,在日常操作中,相信很多人在Vue中Watcher和Scheduler的实现原理

    攻略 2021年12月3日
  • SYS用户登录Oracle报错ORA-01031怎么办

    技术SYS用户登录Oracle报错ORA-01031怎么办这篇文章主要为大家展示了“SYS用户登录Oracle报错ORA-01031怎么办”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并

    攻略 2021年11月20日
  • css盒子溢出的所有内容隐藏(css对图片设置隐藏左边部分)

    技术css如何设置图片放大后隐藏溢出这篇文章主要介绍“css如何设置图片放大后隐藏溢出”,在日常操作中,相信很多人在css如何设置图片放大后隐藏溢出问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家

    攻略 2021年12月13日
  • Sequoiadb数据库快照的字段含义是什么(数据库快照的作用是什么)

    技术Sequoiadb数据库快照的字段含义是什么这篇文章主要介绍“Sequoiadb数据库快照的字段含义是什么”,在日常操作中,相信很多人在Sequoiadb数据库快照的字段含义是什么问题上存在疑惑,小编查阅了各式资料,

    攻略 2021年12月22日
  • 春联由来,春联的习俗是如何流传开的

    技术春联由来,春联的习俗是如何流传开的春联二三事实在没有想到春联由来,我家的春联成了他人过目不忘的风景!前年,因为东面邻家华栋殿宇欣喜落成,我家的围墙、地皮被拉裂扯破,主房也受到了一些损伤,被迫重砌围墙、装修房屋,我们的

    生活 2021年10月23日