编辑:我绕过了这个问题,在图像中添加了一个2位帧,然后使用我的代码,最后剪切图像以删除多余的帧。这是一个丑陋的解决方案,但它的工作!

我遇到了一个问题,我不确定这是一个错误还是我缺乏经验。我会尽量把它总结清楚:我得到了一个二值图像,其中包含我要分析的彩色图像的轮廓(白色像素是我的算法检测到的轮廓的周长,其余为黑色)。图像相当复杂,因为我要检测的对象完全填充了图像(没有“背景”)。

我用findcontours来处理这个图像:contours, hierarchy = cv2.findContours(image,cv2.RETR_CCOMP,cv2.CHAIN_APPROX_NONE)

然后“for”循环检测面积小于“X”像素和hierarchy[0][x][3] >= 0的轮廓(让我们称新数组为“courtos”

我在新图像中绘制“轮廓2”:cv2.drawContours(image=image2, contours=contours_2, contourIdx=-1, color=(255,255,255), thickness=-1)

问题是,drawcontours可以很好地绘制所有的轮廓,但它不能“填充”图像边界中的轮廓(即,在图像边缘有一个边界的轮廓)。我尝试将图像的边框像素(如帧)设置为True,但它不起作用,因为findcontours会自动将这些像素设置为零(在函数描述中)。

在前一个循环中使用cv2.contourArea可以很好地检测这些等高线并返回正常值,因此无法知道绘图等高线何时会忽略等高线以及何时正确填充等高线。cv2.isContourConvex根本不起作用,因为会将每个轮廓返回为false。

在绘制轮廓之前,我可以使用cv2.converxhull绘制那些“边缘”轮廓,但我只需要在边缘使用它(因为它会使轮廓变形,我希望尽可能避免这种情况)。问题是。。。我没有办法检测哪些轮廓在图像的边缘,哪些不在,并且可以与绘制轮廓一起工作。

所以我想问一下为什么drawContour的行为是那样的,如果有什么方法可以让它填充边缘的轮廓。或者,另一个解决方案是找到如何检测图像边界中的轮廓(以便在需要时应用converxhull)。

opencv补全边缘_为什么OpenCV中绘制的轮廓不能填充图像边缘的轮廓?相关推荐

  1. opencv 梯度幅值_基于OpenCV的图像梯度与边缘检测!

    严格的说,梯度计算需要求导数.但是图像梯度的计算,是通过计算像素值的差得到梯度的近似值.图像梯度表示的是图像变化的速度,反映了图像的边缘信息. 边缘是像素值快速变化的地方.所以对于图像的边缘部分,其灰 ...

  2. python自动补全库_叼炸天的库! 自动补全 Python 代码,能节省 60% 敲码时间

    近日,Reddit 上的一篇帖子引起了网友的热议.帖子作者「mlvpj」称: 「我们使用深度学习完成了一个简单的项目,可以自动进行 Python 代码补全.」 根据介绍,该项目基于 LSTM 模型,训 ...

  3. python自动补全库_这个库厉害了,自动补全Python代码,节省50%敲码时间

    近日,Reddit 上的一篇帖子引起了网友的热议.帖子作者「mlvpj」称: 「我们使用深度学习完成了一个简单的项目,可以自动进行 Python 代码补全.」 根据介绍,该项目基于 LSTM 模型,训 ...

  4. 低秩矩阵补全算法matlab实现,推荐系统中的矩阵补全算法

    最基本的问题,以用户电影评分为例,也就是这个用户-电影矩阵. 表中是用户多电影的评分,但评分有缺失,因为用户不可能对所有电影作出评价. 那么推荐问题就是给用户合理推荐一个没看过的电影,合理是指,预测用 ...

  5. vscode html tab键补全插件_打造舒适的 VS Code 开发环境

    此文用于记(分)录(享)我的VS Code环境配置(只涉及通用化配置,不包含诸如自定义代码段等定制化配置),主要用于算法/深度学习的日常开发,涉及语言为Python和C++,操作系统为Linux(偶尔 ...

  6. opencv java 人头识别_使用OpenCV人头检测

    [实例简介] 一个应用于公交.汽车.车站商场的人头检测程序,检测出人头进出数量. 输入一幅图片,通过计算指定入口区域的HIST结果,判断是否有人进入.可同时检测2人进入或出去. 一种基于随机Hough ...

  7. 用python实现分段函数_在Python中绘制分段函数

    我想使用Matplotlib在 Python中绘制以下分段函数,从0到5. f(x)= 1,x!= 2; f(x)= 0,x = 2 在Python中-- def f(x): if(x == 2): ...

  8. 怎样使用python画复杂函数_在python中绘制复杂的函数?

    我试图在python中绘制一个带有可变参数的复杂函数,并且发现我无法解释的差异.我的代码如下所示:import matplotlib.pyplot as plt from numpy import p ...

  9. 如何用java画坐标轴_在java中绘制极坐标图

    有谁知道如何开始在java中绘制极坐标图并在此图上绘制一些点?我的意思是圆圈和线条,我希望用像swing这样的东西来做这件事,而不是像Jfreechart那样使用任何库 谢谢 解决方法: 你可能想看看 ...

最新文章

  1. 图像处理之快速均值模糊(Box Blur)
  2. SQL Server-聚焦深入理解动态SQL查询(三十二)
  3. Recommended Journals for MPhil degree at Business Model Innovation Group
  4. 数字调制系统工作原理_空间光调制器工作原理是什么 空间光调制器工作原理...
  5. list c++template
  6. react获取id_解决React应用界面开发常见痛点(一)业务逻辑与UI分离
  7. JMS学习四(ActiveMQ消息过滤)
  8. linux fork脚本,在Shell脚本中调用另一个脚本的三种方式讲解
  9. 【读书笔记】【独立思考】2018-03-14
  10. mysql代码的核心类_mysql源码---核心类 (1)线程类
  11. C++ STL string字符串替换 replace函数的使用
  12. IDEA 代码格式化
  13. 电容器选型指南-电子元器件选型指导系列
  14. ftp服务器文件夹设置,ftp服务器可设置的文件夹
  15. P2825 [HEOI2016/TJOI2016]游戏
  16. 权限管理实现——权限过滤器
  17. Java返回机动车的功率_上季度平均功率BI
  18. ardupilot java_基于Eclipse IDE的Ardupilot飞控源码阅读环境搭建
  19. k8s FailedCreatePodSandBox: Failed create pod sandbox
  20. 交住房公积金的好处及作用

热门文章

  1. Rabin-Karp算法 java_第 2 章 字符串
  2. 华为抢购助手_就一句话,华为这个智慧办公新物种“有点东西”!
  3. 联科集团携手阿里云发布科研混合云平台 共建科研教育新生态
  4. Git 2.18版本发布:支持Git协议v2,提升性能
  5. js事件(Event)知识整理
  6. linux下的module_param()解释【转】
  7. MongoDB使用小结:一些常用操作分享
  8. Android菜单详解(一)——理解android中的Menu
  9. 【HDOJ】1058 Humble Numbers
  10. css如何自动换行对于div,p等块级元素(转)