python_opencv 黑白图片之白色部分单独分离

  • 问题
  • 思路介绍
  • 附上我的代码
  • 结语

问题

最近在学习图像处理方面的东西,于是找了一些小任务,进行锻炼,对于这个黑白图片,白色部分单独取出并分别保存的做法,发现网上很少有类似的,于是便写下了这篇文章。

思路介绍

我的思路是首先通过**cv2.findContours()**所有白色部分的contours,也即轮廓的坐标点集合,然后通过重新新建一个图片,将以坐标填充到新建的图片内,其余都填充黑色,最后加以保存,便得到了想要的白色独立图片。

附上我的代码

import os
import numpy as np
import cv2def cut(lenth, contours, mask, h, w):x_data = [0 for i in range(lenth)] # 以contours的大小为数组的大小,便于后续操作y_data = [0 for i in range(lenth)]for i in range(lenth):x_data[i] = contours[i][0][0] # x坐标赋值,至于为何这样,可以打印contours便可发现其中道理for i in range(lenth):y_data[i] = contours[i][0][1]max_x = max(x_data) # 这里是为了方便取出来的部分有一定的黑边包裹min_x = min(x_data)max_y = max(y_data)min_y = min(y_data)if max_y+5>=h:max_y = helse:max_y = max_y+5if min_y-5<=0:min_y = 0else:min_y = min_y-5if max_x+5>=w:max_x = welse:max_x = max_x+5if min_x-5<=0:min_x = 0else:min_x = min_x-5print(max_x, min_x, max_y, min_y)pts = np.vstack((x_data, y_data)).astype(np.int32).T # 将x, y轴坐标拼接,得到一个完整的坐标cv2.fillPoly(mask, [pts], (255, 255, 255), 8, 0)# 按坐标填充mask = mask[min_y:max_y, min_x:max_x] # 只取有白色的部分,剩下的丢弃return maskimage = cv2.imread('./img/1.png') # 填写自己的路径
# 灰度转换
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 获取边缘坐标
_, image_binary = cv2.threshold(gray_image, 0, 255, cv2.THRESH_OTSU)contours, hierarchy = cv2.findContours(image_binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)h, w, c = image.shape
for i in range(len(contours)):mask = np.zeros((h, w, c), dtype=np.uint8)mask = cut(len(contours[i]), contours[i], mask, h, w)cv2.imshow('mask', mask)cv2.waitKey(1000)cv2.imwrite('./final_img/'+'/'+str(i)+'.png', mask) # 保存的路径,路径上的文件夹要提前创建,否则保存不成功

结语

具体的介绍在代码里面,如果大家有更好的想法,可以一起交流,得到更好的方法取处理这样的事情

python_opencv 黑白图片之白色部分单独分离相关推荐

  1. php 生成纯黑白图片,使用CSS将彩色图片转换为黑白图片

    通过使用过滤器我们能够不使用photoshop等图像软件或js.php等技术就可以进行各种图像处理.现在,CSS过滤器已经被各种现代浏览器广泛支持,我们可以使用一些组合的方法,来制作跨浏览器的图像处理 ...

  2. 转png格式_CAD转PNG,你知道怎样转换成高质量清晰的黑白图片吗?

    嗨,我是爱踢汪.每当我们在绘制CAD图纸的过程中,为了方便于传输查看,我们常常需要把CAD图纸转换成图片格式.其中就有JPG和PNG格式.相 较于有损压缩的JPG格式,PNG格式是可以保存为透明背景的 ...

  3. 如何快速将一张彩色图片变成黑白图片

    1.首先找到一张图片,比如:c:\abc.png 2.建立一个.html文件,如:test.html,里面可以就一句话: <img src="file://c:/abc.png&quo ...

  4. 百行代码构建神经网络黑白图片自动上色系统

    使用神经网络对图片进行风格化渲染是计算机视觉领域的热门应用之一.本文将向你介绍一种简单而有效的黑白图片上色方法,仅需 100 行代码,你也可以搭建自己的神经网络,几秒钟内让计算机自动完成手动工作需要几 ...

  5. CAD转PNG,怎样转换成高质量清晰的黑白图片

    每当我们在绘制CAD图纸的过程中,为了方便于传输查看,我们常常需要把CAD图纸转换成图片格式.其中就有JPG和PNG格式.相 较于有损压缩的JPG格式,PNG格式是可以保存为透明背景的无 损压缩格式. ...

  6. CAD如何转换成高清的黑白图片?

    我们在进行CAD操作过程中,如何将CAD文件转换成高清的黑白图片呢?下面来教你如何进行操作. 1.我们先在迅捷CAD官网里下载安装迅捷CAD转换器,并启动软件进入操作页面. 2.在迅捷CAD转换器操作 ...

  7. [答疑]EA如何导出黑白图片,无阴影,无填充色

    火星 (16**3041) 2012-09-26 15:40:59 潘老师,各位大侠,请教一下EA如何导出黑白图片,无阴影,无填充色... 潘加宇 (3504847) 2012-09-26 15:41 ...

  8. 10_Numpy图片RGB色彩通道的分离,以及单色化,黑色化和颜色的交换

    10_Numpy图片RGB色彩通道的分离,以及单色化,黑色化和颜色的交换 使用Numpy进行图片处理时,RGB图片为行(高度)*列(宽度)*高(3)的ndarray数组,黑白图片为行(高度)*列(宽度 ...

  9. 判断位图是否是黑白图片

    链接: http://blog.csdn.net/redfield123/article/details/8900073 最近工作需要判断图片是否是黑白的,由于是十万张以上的大批量处理,所以通过程序来 ...

  10. 主题是计算机上的图片 颜色,如何在电脑中将彩色图片转换为黑白图片

    this.p={ m:2, b:2, loftPermalink:'', id:'fks_0870710870830800670820870870700720840880700820800830750 ...

最新文章

  1. shell 脚本比较字符串相等_shell字符串比较判断是否为数字
  2. Fiori里花瓣的动画效果实现原理
  3. 【POJ - 2965】The Pilots Brothers' refrigerator(暴力枚举,思维)
  4. 编程神回复:数学不好能学编程吗?网友的回复令人满怀信心!
  5. html段落前的空格,HTML空格:空格前后
  6. 解决nginx部署后css、js、图片等样式不加载的问题
  7. E人E本让中国人多了一种选择
  8. R语言-主成分分析和聚类分析实操(包含源码)
  9. 串口连接BBB(三)
  10. 如何使用 Web Speech API 在浏览器中识别语音
  11. 服务器没有信号给到继电器,dx-8型信号继电器为什么有自锁结构
  12. 用JavaScript写一个简单的网页倒计时插件
  13. Windows10 使用Win32.Mak 进行makefile编译
  14. JavaEE程序猿的Java世界观⑤
  15. 破解网易云js加密,爬虫获取网易云评论
  16. Q版人物动作怎么画?如何画好Q版人物动作?
  17. 网上关于'好人卡'的定义
  18. python自动化测试验证码处理方法
  19. JavaWebJavaEE重要基础知识
  20. 深入理解Lua的闭包:概念和应用

热门文章

  1. 前端获取计算机设备信息,JS怎么获取客户端计算机硬件信息
  2. 调试LLVM如何生成SSA
  3. html日志网页,以HTML为表现的日志记录组件
  4. 学习笔记(109):R语言入门基础-text函数
  5. Xcelsius 访问webservice 需要配置
  6. 命令行帮助文档语法格式详解
  7. 【Turtle合集】提前祝大家圣诞快乐,我为大家献歌一首,叮叮当,叮叮当,穷的响叮当——快开门,我送礼物来了哟~(圣诞树代码)
  8. html li加入数字,LI自动添加数字序号
  9. linux ARM64 中断底层处理代码分析
  10. 蓝牙耳机无法与计算机连接,电脑连接蓝牙耳机时无法连接