python用opencv完成图像分割并进行目标物的提取


Posted in Python onMay 25, 2020

运行平台: Windows
Python版本: Python3.x
IDE: Spyder
今天我们想实现的功能是对单个目标图片的提取如图所示:

python用opencv完成图像分割并进行目标物的提取

图片读取

###############头文件
import matplotlib.pyplot as plt
import os
import cv2
import numpy as np
from PIL import Image
#from skimage import io
import random
from PIL import Image

首先要完成图片的读取,通过cv2.imshow显示``

img = cv2.imread("1_3img.png")############图片读取
#cv2.imshow('picture', img) 
#cv2.waitKey(0)
pictue_size=img.shape
picture_height=pictue_size[0]
picture_width=pictue_size[1]

边界提取

################灰度化,以及二值化
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
ret, binary = cv2.threshold(gray,1,255,cv2.THRESH_BINARY) 
############################

######################边界提取,contours包含边界值的坐标
contours, hierarchy = cv2.findContours(binary,cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE)

边界提取采用cv2.findContours,在进行边缘提取的时候要把图像处理为二值图像,这里要说明一下,不同版本的opencv,cv2.findContours输出的值不同,有两个有三个,我们这个opencv版本输出为两个。
coontours为所有边界点的集合,是一个list,我们图中有三个区域,所以len(list)=3,每一个list里包含边界值数据。

图片提取

img2=[0 for i in range(len(contours))]
print(len(contours))
for i in range(len(contours)):
  img2[i]=cv2.imread("./blackboard/test.jpg")############黑色底板图片读取
  print(img2[i].shape)
#  cv2.drawContours(img2[i],contours[i],-1,(0,0,255),3) #########画边界 
  ###############全图片遍历找到相应的在轮廓之内的点
  for a in range(picture_height):
    for b in range(picture_width):
      #############################################辨别是否在轮廓内是定义为1,不是定义为-1
      result = cv2.pointPolygonTest(contours[i], (a,b), False)
      if result>0:
        img2[i][b,a]=100
  ##############下面填写保存代码
  scipy.misc.imsave('picture'+str(i)+'.jpg',img2[i])

我们先读取一个黑色底版图片,里面所有的值为0,通过cv2.pointPolygonTest函数来分析像素点的位置是否在边界区域内,是返回1,不是返回-1,是的点我们赋值为100,并保存,最后得到我们想要的图片啦

到此这篇关于python用opencv完成图像分割并进行目标物的提取的文章就介绍到这了,更多相关python opencv图像分割并提取内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python使用正则表达式匹配字符串开头并打印示例
Jan 11 Python
Python解惑之True和False详解
Apr 24 Python
浅谈Python基础之I/O模型
May 11 Python
Python操作Sql Server 2008数据库的方法详解
May 17 Python
python读取几个G的csv文件方法
Jan 07 Python
对PyQt5的输入对话框使用(QInputDialog)详解
Jun 25 Python
python如何给字典的键对应的值为字典项的字典赋值
Jul 05 Python
Python如何使用turtle库绘制图形
Feb 26 Python
tensorflow之读取jpg图像长和宽实例
Jun 18 Python
虚拟机下载python是否需要联网
Jul 27 Python
Python可视化工具如何实现动态图表
Oct 23 Python
Python基础详解之邮件处理
Apr 28 Python
Pytorch转tflite方式
May 25 #Python
Python HTMLTestRunner库安装过程解析
May 25 #Python
Anaconda+vscode+pytorch环境搭建过程详解
May 25 #Python
5行Python代码实现图像分割的步骤详解
May 25 #Python
Win10用vscode打开anaconda环境中的python出错问题的解决
May 25 #Python
keras .h5转移动端的.tflite文件实现方式
May 25 #Python
Python虚拟环境venv用法详解
May 25 #Python
You might like
利用PHP实现图片等比例放大和缩小的方法详解
2013/06/06 PHP
解密ThinkPHP3.1.2版本之模块和操作映射
2014/06/19 PHP
PHP模板引擎Smarty之配置文件在模板变量中的使用方法示例
2016/04/11 PHP
PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法
2016/05/13 PHP
php中类和对象:静态属性、静态方法
2017/04/09 PHP
详解PHP5.6.30与Apache2.4.x配置
2017/06/02 PHP
Yii2.0实现的批量更新及批量插入功能示例
2019/01/29 PHP
PhpStorm连接服务器并实现自动上传功能
2020/12/09 PHP
[原创]js与自动伸缩图片 自动缩小图片的多浏览器兼容的方法总结
2007/03/12 Javascript
JavaScript 字符编码规则
2009/05/04 Javascript
JavaScript之引用类型介绍
2012/08/10 Javascript
IE、FF浏览器下修改标签透明度
2014/01/28 Javascript
window.location不跳转的问题解决方法
2014/04/17 Javascript
JavaScript的null和undefined区别示例介绍
2014/09/15 Javascript
[原创]jQuery常用的4种加载方式分析
2016/07/25 Javascript
Google 地图控件集详解及实例代码
2016/08/06 Javascript
javascript实现复选框全选或反选
2017/02/04 Javascript
浅谈JS如何实现真正的对象常量
2017/06/25 Javascript
JQ图片文件上传之前预览功能的简单实例(分享)
2017/11/12 Javascript
webpack4与babel配合使es6代码可运行于低版本浏览器的方法
2018/10/12 Javascript
Element Alert警告的具体使用方法
2020/07/27 Javascript
pycharm配置当鼠标悬停时快速提示方法参数
2019/07/31 Python
python装饰器使用实例详解
2019/12/14 Python
python 写函数在一定条件下需要调用自身时的写法说明
2020/06/01 Python
纯css3制作煽动翅膀的蝴蝶的示例
2018/04/23 HTML / CSS
浅析CSS3 中的 transition,transform,translate之间区别和作用
2020/03/26 HTML / CSS
CSS3中引入多种自定义字体font-face
2020/06/12 HTML / CSS
LivingSocial英国:英国本地优惠
2019/02/22 全球购物
马来西亚在线药房:RoyalePharma
2019/12/01 全球购物
YII2 全局异常处理深入讲解
2021/03/24 PHP
小学教师读书活动总结
2014/07/08 职场文书
2014年大学生预备党员思想汇报1000字
2014/09/13 职场文书
教师党员承诺书2015
2015/01/21 职场文书
Java实现学生管理系统(IO版)
2022/02/24 Java/Android
面试分析分布式架构Redis热点key大Value解决方案
2022/03/13 Redis
python神经网络学习 使用Keras进行回归运算
2022/05/04 Python