mask2former出来的灰度图转切割轮廓后的二值图
切割后的灰度图
转成二值图代码如下
点击查看代码
# This is a sample Python script.
import cv2
import numpy as np
# Press Shift+F10 to execute it or replace it with your code.
# Press Double Shift to search everywhere for classes, files, tool windows, actions, and settings.
def masks_to_mask( masks):
'''
16位mask转8位二值mask
'''
# 注意: Sobel函数求完导数后会有负值,还有会大于255的值。而原图像是uint8,即8位无符号数,所以Sobel建立的图像位数不够,会有截断。
# 第二个参数可以传cv.CV_32F。在经过处理后,要用convertScaleAbs()函数将其转回原来的uint8形式。否则将无法显示图像,
# 而只是一副灰色的窗口。
x = cv2.Sobel(masks, cv2.CV_16S, 1, 0)
y = cv2.Sobel(masks, cv2.CV_16S, 0, 1)
absX = cv2.convertScaleAbs(x) # 转回uint8
absY = cv2.convertScaleAbs(y)
# 函数convertScaleAbs依次执行三个操作:缩放,获取绝对值,转换为无符号的8位类型
edge = cv2.addWeighted(absX, 0.5, absY, 0.5, 0)
# cv2.imshow("edge",edge)
edge1=edge
# num1=cv2.countNonZero(edge)
ret, edge1 = cv2.threshold(edge, 0, 255, cv2.THRESH_BINARY)
cv2.bitwise_not(edge1, edge1)
cv2.imshow("edge1", edge1)
cv2.imwrite('ConvertToBinary/dest/edge1.png', edge1)
mask = np.where(masks > 0, 255, 0)
mask = mask.astype(np.uint8)
cv2.bitwise_and(edge1, mask, mask)
cv2.imshow("result",mask)
return mask
# Press the green button in the gutter to run the script.
if __name__ == '__main__':
# print_hi('PyCharm')
src=cv2.imread('ConvertToBinary/src/003.png')
mask=masks_to_mask(src)
cv2.imwrite('ConvertToBinary/dest/result.png',mask)
# cv2.imshow("mask",mask)
cv2.waitKey(0)
# See PyCharm help at https://www.jetbrains.com/help/pycharm/
中间结果edge1.png图片
相当于生成一个黑色边缘的mask与原二值图做与与运算这样就可以生成多个临近物体分开的二值图
最后结果为
如果用普通方法转成的二值图为
请注意右下角白色部分| | | |
| ---- | ---- | ---- |
| | | |
mask2former出来的灰度图转切割轮廓后的二值图的更多相关文章
- c语言实现灰度图转换为二值图
将上篇得到的灰度图转换为二值图,读取像素数据,低于某一值置0,否则设置为255,为得到更好的效果不同图片应采用不同的值 /* 2015年6月2日11:16:22 灰度图转换为二值图 blog:http ...
- zw·准专利·高保真二值图细部切分算法
zw·准专利·高保真二值图细部切分算法 高保真二值图细部切分算法,是中国字体协会项目的衍生作品. 说准专利算法,是因为对于图像算法的标准不了解,虽然报过专利,但不是这方面的,需要咨询专 ...
- S0.4 二值图与阈值化
目录 二值图的定义 二值图的应用 阈值化 二值化/阈值化方法 1,无脑简单判断 opencv3函数threshold()实现 2,Otsu算法(大律法或最大类间方差法) OpenCV3 纯代码实现大津 ...
- opencv删除二值图中较小的噪点色块
CvSeq* contour = NULL; double minarea = 100.0; double tmparea = 0.0; CFileDialog dlg(true); if (dlg. ...
- 使用OpenCV查找二值图中最大连通区域
http://blog.csdn.net/shaoxiaohu1/article/details/40272875 使用OpenCV查找二值图中最大连通区域 标签: OpenCVfindCoutour ...
- C语言实现将彩色BMP位图转化为二值图
CTF做了图片的隐写题,还没有形成系统的认识,先来总结一下BMP图的组成,并通过将彩色图转为二值图的例子加深下理解. 只写了位图二进制文件的格式和代码实现,至于诸如RGB色彩和调色板是什么的一些概念就 ...
- 超越OpenCV速度的MorphologyEx函数实现(特别是对于二值图,速度是CV的4倍左右)。
最近研究了一下opencv的 MorphologyEx这个函数的替代功能, 他主要的特点是支持任意形状的腐蚀膨胀,对于灰度图,速度基本和CV的一致,但是 CV没有针对二值图做特殊处理,因此,这个函数对 ...
- 用 Python 通过马尔可夫随机场(MRF)与 Ising Model 进行二值图降噪
前言 这个降噪的模型来自 Christopher M. Bishop 的 Pattern Recognition And Machine Learning (就是神书 PRML……),问题是如何对一个 ...
- coco数据集标注图转为二值图python(附代码)
coco数据集大概有8w张以上的图片,而且每幅图都有精确的边缘mask标注. 后面后分享一个labelme标注的json或xml格式转二值图的源码(以备以后使用) 而我现在在研究显著性目标检测,需要的 ...
- BMP彩色转成黑色二值图
一天半把彩色bmp转成黑白了. 原理是: 第一步:读出位图数据的偏移位置:即第11个字节,用fseek即可. 然后将偏移位置之前的数据全部写入新的bmp图中. 第二步:用fseek移到位图数据这前,判 ...
随机推荐
- 【Azure 环境】Azure 流分析服务(Steam Analytics) 报出 OutputDataConversionError 错误引起延迟及超时
问题描述 Azure 流分析服务(Steam Analytics) 报出 OutputDataConversionError 错误引起延迟及超时. 查看详细错误: 问题解答 在错误消息中,有非常明确的 ...
- 聊聊 HTTP 性能优化
哈喽大家好,我是咸鱼. 作为用户的我们在 "上网冲浪" 的时候总是希望快一点,尤其是抢演唱会门票的时候,但是现实并非如此,有时候我们会遇到页面加载缓慢.响应延迟的情况. 而 HTT ...
- Java面试必考题之线程的生命周期,结合源码,透彻讲解!
写在开头 在前面的几篇博客里,我们学习了Java的多线程,包括线程的作用.创建方式.重要性等,那么今天我们就要正式踏入线程,去学习更加深层次的知识点了. 第一个需要学的就是线程的生命周期,也可以将之理 ...
- 内存缓存 Gcache VS Caffeine源码详解
转一篇.后续再尝试自己实践一下
- left jon连接查询踩坑记
项目开发中经常会使用到多张表进行关联查询,比如left join关联查询. 如果有一张表A和一张表B,查询语句 SELECT a.*,b.name from A a left join B b On ...
- Android WebView获取html源码
通过执行js语句来获取 val code = """ document.documentElement.outerHTML """.trim ...
- Android 多module情况下module依赖aar问题处理
原文: Android 多module情况下module依赖aar问题处理 - Stars-One的杂货小窝 问题描述 负责一个大项目Android工程项目,新增了一个module,而此module由 ...
- buu第一页复盘
这里就对之前第一遍没写出来的题目再写一次wp 写在之前 贴一下我的模块文件 from pwn import * from LibcSearcher import * from struct impor ...
- [置顶]
tomcat处理请求导致页面出现ERR_CONNECTION_RESET错误解决方案
现象: 浏览器发送请求到servlet,servlet处理时间太久,所以导致chrome浏览器出现ERR_CONNECTION_RESET错误 解决方案: 在相应servlet执行最后添加一句代码: ...
- C++ 赋值运算符和拷贝构造函数
拷贝构造函数 class Foo{ public: Foo(); Foo(const Foo&); //自己定义的拷贝构造函数 }; 如果不自己定义,编译器会自己合成一个默认拷贝构造函数: c ...