最大轮廓和投影
vector <cv : :Point > FindBigestContour(Mat src)
{
int imax = 0; //代表最大轮廓的序号
int imaxcontour = - 1; //代表最大轮廓的大小
std : :vector <std : :vector <cv : :Point >>contours;
findContours(src,contours,CV_RETR_LIST,CV_CHAIN_APPROX_SIMPLE);
for ( int i = 0;i <contours.size();i ++)
{
int itmp = contourArea(contours[i]); //这里采用的是轮廓大小
if (imaxcontour < itmp )
{
imax = i;
imaxcontour = itmp;
}
}
return contours[imax];
}
Vector < int > vectorV; //横向循环
Vector < int > vectorH; //纵向循环
Vector < int > VUpper;
Vector < int > VDown;
vector < int > HUpper;
vector < int > HDower;
// 做横向循环
for ( int i = 0;i <ostu.cols;i ++)
{
Mat data = ostu.col(i);
int itmp = countNonZero(data);
vectorV.push_back(itmp);
}
//上波形为VUpper,下波形为VDown
for ( int i = 1;i <vectorV.size();i ++)
{
if (vectorV[i - 1] == 0 && vectorV[i] > 0)
{
VUpper.push_back(i);
}
if (vectorV[i - 1] > 0 && vectorV[i] == 0)
{
VDown.push_back(i);
}
}
//做纵向循环,这个往往处理的是横向循环的结果图片
for ( int j = 0;j <ostu.rows;j ++)
{
Mat data = roitmp.row(j);
int itmp = countNonZero(data);
vectorH.push_back(itmp);
}
for ( int j = 0;j <vectorH.size() - 1;j ++)
{
if (vectorH[j] > 0 && vectorH[j + 1] == 0)
{
HDower.push_back(j);
}
if (vectorH[j] == 0 && vectorH[j + 1] > 0)
{
HUpper.push_back(j);
}
}
//由于处理的上波形和下波形可能会有问题,需要进行一定的处理
//这里的一个处理就是提出哪些短暂的空白区域
for ( int j = 0;j <HDower.size() - 1;j ++)
{
//得出之间空白的区域
int iwidth = HUpper[j + 1] - HDower[j];
if (iwidth > 10)
{
iresult = iresult + 1;
}
}
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
如何做出半透明和闪光效果
如何做出半透明和闪光效果 一开始看到这样的效果的时候,我感觉非常酷,等到搞明白原理之后,才发现原来很酷的效果可以通过很简单的代码实现,这就更酷了。 首先,需要获得读取一些图片,最好是自然的图片,带点后现代风格的那种。 像这张,带有一种工厂颓废风格的图片,就很是适合。 然后需要在图像中创建一个矩形。 如果是直接创建的话,那么就应该是这样的效果: Rectrect( 0, 0, 200, 400); rectangle(src,rect,Scalar( 0, 0, 0)); Rectrect( 0, 0, 200, 400); rectangle(src,rect,Scalar( 0, 0, 0), - 1); 写出这样则是填充的效果,写出这样还是真难看 但是写成这样,就可以得到半透明的效果。关键是融合了前景和背景的颜色。 Rectrect( 0, 0, 200, 400); Matroi =src(rect); roi +=CV_RGB( 90, 90, 90); 而闪光效果,则多用于在视频当中。当有需要强调的图片出现的时候,则将全部图片或者某一...
- 下一篇
一维二维码的提取、识别和产生
一维二维码的提取、识别和产生 零、相关说明: 在“jsxyhelu.cnblogs.com/机器视觉”栏目主要介绍和图像处理和机器视觉相关的的成套的解决方案、思路和软件集。希望能够为大家在实际工作中解决具体问题提供一些帮助。 一、背景资料: 现在一维码、二维码广泛使用于工业各方面。很多和图像处理相关的需求也有所涉及。这里也看过一些论文,里面有一些方法还是art-of-air的,也有一些具备一定参考价值。这里只是谈一谈一般情况下的提取和识别。对于特殊情况,肯定要特殊对待,其实本身是一个增强的处理。在条码的处理和产生部分,主要借助了zxing 那么,问题可以分为三个 1.1如何从图片中获取条码区域并且提取条码(由于缺乏二维码图片所有这里只分析一维码,以后有了二维码实际拍摄的图片再补上); 1.2如何识别条码; 1.3如何参数条码 二、主要内容: 2.1如何 从图片中获取条码区域并且提取条码 条码(也就是一维码)在设计的时候就被设计成纵向冗余的。提取就可以借助这一特性。 比如这样的图像,经过canny->dilate->...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8编译安装MySQL8.0.19
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Docker安装Oracle12C,快速搭建Oracle学习环境