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模拟用户登录验证
Sep 11 Python
在Python中执行系统命令的方法示例详解
Sep 14 Python
Python数据分析之获取双色球历史信息的方法示例
Feb 03 Python
Python中%是什么意思?python中百分号如何使用?
Mar 20 Python
python下解压缩zip文件并删除文件的实例
Apr 24 Python
对python中的 os.mkdir和os.mkdirs详解
Oct 16 Python
Linux 修改Python命令的方法示例
Dec 03 Python
Django框架中间件定义与使用方法案例分析
Nov 28 Python
python实现自动化报表功能(Oracle/plsql/Excel/多线程)
Dec 02 Python
如何在scrapy中捕获并处理各种异常
Sep 28 Python
Python实现七个基本算法的实例代码
Oct 08 Python
Python爬虫入门案例之爬取去哪儿旅游景点攻略以及可视化分析
Oct 16 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
推荐一篇入门级的Class文章
2007/03/19 PHP
纯php打造的tab选项卡效果代码(不用js)
2010/12/29 PHP
php.ini-dist 和 php.ini-recommended 的区别介绍(方便开发与安全的朋友)
2012/07/01 PHP
UCenter 批量添加用户的php代码
2012/07/17 PHP
php实现window平台的checkdnsrr函数
2015/05/27 PHP
php版微信js-sdk支付接口类用法示例
2016/10/12 PHP
PHP生成唯一ID之SnowFlake算法
2016/12/17 PHP
PHP快速推送微信模板消息
2017/04/14 PHP
基于jQuery的图片大小自动适应实现代码
2010/11/17 Javascript
简略的前端架构心得&&基于editor为例子的编码小技巧
2010/11/25 Javascript
ASP.NET jQuery 实例3 (在TextBox里面阻止复制、剪切和粘贴事件)
2012/01/13 Javascript
jquery插件tooltipv顶部淡入淡出效果使用示例
2013/12/05 Javascript
ie9 提示'console' 未定义问题的解决方法
2014/03/20 Javascript
js实现显示当前状态的导航效果代码
2015/08/28 Javascript
checkbox批量选中,获取选中项的值的简单实例
2016/06/28 Javascript
微信小程序 Image API实例详解
2016/09/30 Javascript
Angular.JS中的指令引用template与指令当做属性详解
2017/03/30 Javascript
vue+vuex+axios+echarts画一个动态更新的中国地图的方法
2017/12/19 Javascript
Bootstrap 按钮样式与使用代码详解
2018/12/09 Javascript
js 使用ajax设置和获取自定义header信息的方法小结
2020/03/12 Javascript
js实现带箭头的进度流程
2020/03/26 Javascript
Vue中强制组件重新渲染的正确方法
2021/01/03 Vue.js
vite2.0+vue3移动端项目实战详解
2021/03/03 Vue.js
pycharm远程调试openstack代码
2017/11/21 Python
git进行版本控制心得详谈
2017/12/10 Python
python实现音乐下载的统计
2018/06/20 Python
Python使用sqlalchemy模块连接数据库操作示例
2019/03/13 Python
解决Tensorflow2.0 tf.keras.Model.load_weights() 报错处理问题
2020/06/12 Python
Python unittest装饰器实现原理及代码
2020/09/08 Python
Python用dilb提取照片上人脸的示例
2020/10/26 Python
意大利值得信赖的在线超级药房:PillolaStore
2020/02/05 全球购物
德国家具、照明、家居用品网上商店:Wayfair.de
2020/02/13 全球购物
党的群众路线教育实践活动教师自我剖析材料
2014/10/09 职场文书
“学党章、守党纪、讲党规”学习心得体会
2016/01/14 职场文书
Java 超详细讲解hashCode方法
2022/04/07 Java/Android
Spring中的@Transactional的工作原理
2022/06/05 Java/Android