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时间整形转标准格式的示例分享
Feb 14 Python
Python字符串和文件操作常用函数分析
Apr 08 Python
Python中的推导式使用详解
Jun 03 Python
Ubuntu下创建虚拟独立的Python环境全过程
Feb 10 Python
Python在图片中添加文字的两种方法
Apr 29 Python
python实现简单登陆流程的方法
Apr 22 Python
Python判断telnet通不通的实例
Jan 26 Python
Python使用Pandas库实现MySQL数据库的读写
Jul 06 Python
使用tensorflow显示pb模型的所有网络结点方式
Jan 23 Python
利用python 读写csv文件
Sep 10 Python
python语言实现贪吃蛇游戏
Nov 13 Python
发工资啦!教你用Python实现邮箱自动群发工资条
May 10 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
超强分页类2.0发布,支持自定义风格,默认4种显示模式
2007/01/02 PHP
php对csv文件的读取,写入,输出下载操作详解
2013/08/10 PHP
PHP+Ajax实现无刷新分页实例详解(附demo源码下载)
2016/04/07 PHP
js option删除代码集合
2008/11/12 Javascript
js中匿名函数的N种写法
2010/09/08 Javascript
JavaScript获得url查询参数的方法
2015/07/02 Javascript
JavaScript代码里的判断小结
2016/08/22 Javascript
jquery获取table指定行和列的数据方法(当前选中行、列)
2016/11/07 Javascript
js canvas实现QQ拨打电话特效
2017/05/10 Javascript
Vue实现表格批量审核功能实例代码
2019/05/28 Javascript
为react组件库添加typescript类型提示的方法
2020/06/15 Javascript
vue 获取到数据但却渲染不到页面上的解决方法
2020/11/19 Vue.js
jquery自定义组件实例详解
2020/12/31 jQuery
[48:32]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 LGD vs VG
2018/04/01 DOTA
[01:03:13]VG vs Pain 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python数据可视化编程通过Matplotlib创建散点图代码示例
2017/12/09 Python
python 3.5实现检测路由器流量并写入txt的方法实例
2017/12/17 Python
Python基于OpenCV实现视频的人脸检测
2018/01/23 Python
Python 实现网页自动截图的示例讲解
2018/05/17 Python
python查看列的唯一值方法
2018/07/17 Python
解决pyshp UnicodeDecodeError的问题
2019/12/06 Python
轻松掌握CSS3中的字体大小单位rem的使用方法
2016/05/24 HTML / CSS
AJAX的优缺点都有什么
2015/08/18 面试题
村委会主任先进事迹
2014/01/15 职场文书
设计师个人求职信范文
2014/02/02 职场文书
医院护士见习期自我鉴定
2014/04/10 职场文书
汽车运用工程专业求职信
2014/06/18 职场文书
预备党员对照检查材料思想汇报
2014/09/24 职场文书
医院领导班子整改方案
2014/10/01 职场文书
街道党工委党的群众路线教育实践活动对照检查材料思想汇报
2014/10/05 职场文书
2015年端午节活动策划书
2015/05/05 职场文书
OpenCV-Python 实现两张图片自动拼接成全景图
2021/06/11 Python
教你用python实现12306余票查询
2021/06/30 Python
Python超详细分步解析随机漫步
2022/03/17 Python
MySQL去除密码登录告警的方法
2022/04/20 MySQL
MySQL存储过程及语法详解
2022/08/05 MySQL