当前位置:首页 > 旅游指南

dilate OpenCV寻找复杂背景下物体的轮廓

一、问题提出

这是来自OPenCV问答社区的一个问题——“answerOpenCV”,编译如下:

标题:OpenCV / C++ -填充孔

内容:

你好,

对于个人项目,我试图检测物体和阴影。这些是我现在的结果:原文:

对象:

阴影:

物体的外部轮廓挺好的,但是你也看到了,我的物体并不饱满。影子也一样。我想得到物体及其阴影的完整轮廓,填充,我不知道如何得到比这更好的(我只是暂时使用“扩张”)。请问有人知道一个获得更好结果的方法吗?问候。

二、问题分析

从原图来看,此图背景复杂,光照中有偏振。虽然提问者提出了“合并缝隙”的要求,但其实他还是想得到目标对象的准确轮廓。

第三,解决问题

基于现有的经验和工具如OpenCV和GOCVhelper,可以快速获得以下结果

h通道:

除光差异:

阈值:

注释:

第四,算法的关键

这个算法先解决了这个问题,我觉得也很稳健。除了经典的hsv分解->: Ostu阈值->:最大轮廓标记外,最关键的算法是去除光差的礼帽。该算法来源于Gonzalez的《数字图像处理教程》的形态学章节,完全按照书上的推荐来实现,表现出了很好的效果。

//answerOpenCV OpenCV/c++——填洞

#包含“stdafx.h”

#include<。iostream>。

#include<。vector>。

使用usingnamespacecv

使用命名空间TD;

//找到最大的轮廓

vector<。点>FindBigestContour(Mat src){

内膜= 0;

内膜xcontour =-1;

STD::vector & lt;STD::vector & lt;点>>。轮廓;

查找轮廓(src,轮廓,CV _ RETR _列表,CV _链_近似_简单);

for(inti = 0;i<。contours . size();i++){

intitmp = contourArea(等高线[I]);

if(imaxcontour <。itmp ){

IMAX = I;

imaxcontour = itmp

}

}

return contours[IMAX];

}

//用高顶帽去除光差

Mat moveLightDiff(Mat src,in dius){

Mat dst

mat srcclone = src . clone();

Mat mask = Mat::zeros(半径* 2,半径* 2,CV _ 8U);

圆(遮罩,点(半径,半径),半径,标量(255),-1);

//大礼帽

侵蚀(srcclone,srcclone,mask);

扩张(srcclone,srcclone,mask);

dst = src-srcclone;

returndst

}

intmain( void)

{

mat src = im read(" e:/sandbox/question . png ");

Mat src _ hsv

垫仓;

mat src _ h;

cvtColor(src,src_hsv,COLOR _ BGR 2 HSV);

vector<。Mat>。rgb _ planes

分割(src_hsv,RGB _ planes);

src _ h = RGB _ planes[0];// h通道有用

src_h = moveLightDiff(src_h,40);

阈值(src_h,bin,100,255,THRESH _ OTSU);

//找到并画出最大的轮廓

vector<。点>bigestcontrolr = FindBigestContour(bin);

vector<。vector<。点>>。懊悔的;

contour . push _ back(bigetcontour);

cv::draw等高线(src,controus,0,Scale(0,0,255),3);

WaitKey();

返回0;

}

五.经验总结

我只用了10分钟就解决了这个问题,花了10分钟写了一篇博客。快速解决问题并写出来的关键是:

1.积累和维护的代码库:

GOCVHelper(https://github . com/jsxyhelu/GOCVHelper)

2.不断阅读思维和实践的习惯;

何路

知识星球嘉宾

目前方向:图像拼接与融合,图像识别联系:jsxyhelu@foxmail.com

1.《dilate OpenCV寻找复杂背景下物体的轮廓》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《dilate OpenCV寻找复杂背景下物体的轮廓》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/junshi/989565.html

上一篇

女子23年前分配工作至今未有通知 详情始末曝光

下一篇

法国指责中方谴责澳方 中方驳斥 这是什么情况

anchor 干货 | Guided Anchoring:物体检测器也能自己学 Anchor

  • anchor 干货 | Guided Anchoring:物体检测器也能自己学 Anchor
  • anchor 干货 | Guided Anchoring:物体检测器也能自己学 Anchor
  • anchor 干货 | Guided Anchoring:物体检测器也能自己学 Anchor

guided 干货 | Guided Anchoring:物体检测器也能自己学 Anchor

  • guided 干货 | Guided Anchoring:物体检测器也能自己学 Anchor
  • guided 干货 | Guided Anchoring:物体检测器也能自己学 Anchor
  • guided 干货 | Guided Anchoring:物体检测器也能自己学 Anchor

侏狨 世界上最小的生物体长3毫米 世界上最小的猪

世界上最小的生物体长3毫米,世界上最小的猪,技术的广泛发展,对于微小生物一直有争议,那么世界上最小的生物是什么。我们现在所列的,是我们肉眼可以看到的前提下,如果说微小的病菌,那就另当别论,至少那些是寄生的。世界上最小的生物1.世界上最小的生物,腹毛动物,体长3毫米腹毛动物是生活在海洋环境中的海洋微生物之一,它...

比利时事件 比利时不明飞行物体事件 被国家承的ufo事件

比利时不明飞行物体事件,被国家承的ufo事件,你见过ufo吗?你相信有外星人吗?每年在世界各地都能发现ufo不明飞行物的踪迹,各种报道ufo的新闻也屡见不鲜,不少人证实曾经亲眼看到过ufo,人们越来越相信外星人的存在。但是不少ufo新闻被证实是人为的,只有少数ufo不明飞行物事件被国家军方承认。比利时不明飞行...

人体搬运是真的 人体搬运实验:物体从隐性时空出现时由小变大

人体搬运是真的 人体搬运实验:物体从隐性时空出现时由小变大

人体搬运功能存在反物理现象。当一个人两手空空,却瞬间让一个物体或活着的动物凭空出现在你面前——这就是民间传说中的人体搬运功能。千百年来,由于只有极少数人了解搬运功能的奥秘。因此,那些没有亲自见证过搬运过程的人,大多对此传说持怀疑态度,甚至认为这是文化低下的人产生的迷信和愚昧认识。那么,搬运功能究竟是否存在呢?“人天学1805虚拟研究室”的一位资深研究者表示:搬运功能与迷信无关,与人类认识自身和宇宙...

军训新生撞脸李现  侧颜轮廓和眼神十分相似(图)

军训新生撞脸李现 侧颜轮廓和眼神十分相似(图)

近日,有网友发现,重庆师范大学有一名大一新生,长相酷似李习安,被称为“李习安”。他的侧面和眼睛很像。网友惊呼:“这太像了!这个同学我要做你女朋友!”“又傻又难分辨”...以上是相关内容,请关注更多信息~ ~...

网传UFO不明物体是真的吗?美军怎么回应的?

UFO不明物体在网上传播是真的吗?美军如何应对?最近,一段美国军用飞机遭遇不明飞行物的视频在网上疯传。这个视频是真的吗?对此,美国海军约瑟夫·格拉德舍尔(Joseph Gradscher)证实了这段视频的真实性,并表示:“我们不知道他们是什么,但我们无法证明他们是外星人。”美军表示,视频中的神秘飞行物速度极快...

西班牙雷暴天现UFO  “银盘”似的不明发光物体(图)

西班牙雷暴天现UFO “银盘”似的不明发光物体(图)

14日晚,西班牙城市空出现不明飞行物,引起大西洋彼岸NASA(美国国家航空航天局)的注意。据斯普特尼克新闻社&广播电台16日报道,西班牙阿利坎特当地时间14日晚正在经历一场雷雨。计算机科学家亚历杭德罗·莫拉(Alejandro Molla)在恶劣的天气里拍了这样一张照片。图为雷电之夜空,一个不明发光物体如“银...