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中字典的基本知识初步介绍
May 21 Python
pymssql数据库操作MSSQL2005实例分析
May 25 Python
python中nan与inf转为特定数字方法示例
May 11 Python
flask框架中勾子函数的使用详解
Aug 01 Python
对python添加模块路径的三种方法总结
Oct 16 Python
在python中实现将一张图片剪切成四份的方法
Dec 05 Python
Python 图像处理: 生成二维高斯分布蒙版的实例
Jul 04 Python
python使用百度文字识别功能方法详解
Jul 23 Python
python [:3] 实现提取数组中的数
Nov 27 Python
python3 字符串知识点学习笔记
Feb 08 Python
关于torch.optim的灵活使用详解(包括重写SGD,加上L1正则)
Feb 20 Python
django使用F方法更新一个对象多个对象字段的实现
Mar 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 杂谈《重构-改善既有代码的设计》之三 重新组织数据
2012/04/09 PHP
php中unserialize返回false的解决方法
2014/09/22 PHP
php+mysql数据库实现无限分类的方法
2014/12/12 PHP
php+html5+ajax实现上传图片的方法
2016/05/14 PHP
PHP对象相关知识总结
2017/04/09 PHP
php通过header发送自定义数据方法
2018/01/18 PHP
通过JS 获取Mouse Position(鼠标坐标)的代码
2009/09/21 Javascript
JS setCapture 区域外事件捕捉
2010/03/18 Javascript
jQuery.each()用法分享
2012/07/31 Javascript
eclipse如何忽略js文件报错(附图)
2013/10/30 Javascript
table对象中的insertRow与deleteRow使用示例
2014/01/26 Javascript
Jquery插件分享之气泡形提示控件grumble.js
2014/05/20 Javascript
JS实现网页Div层Clone拖拽效果
2015/09/26 Javascript
jQuery页面元素动态添加后绑定事件丢失方法,非 live
2016/06/16 Javascript
Node.js中路径处理模块path详解
2016/11/14 Javascript
JS实现数组按升序及降序排列的方法
2017/04/26 Javascript
微信小程序实现选项卡功能
2020/06/19 Javascript
基于node打包可执行文件工具_Pkg使用心得分享
2018/01/24 Javascript
React Native自定义控件底部抽屉菜单的示例
2018/02/08 Javascript
vue源码学习之Object.defineProperty 对数组监听
2018/05/30 Javascript
vue二级菜单导航点击选中事件的方法
2018/09/12 Javascript
跨域请求两种方法 jsonp和cors的实现
2018/11/11 Javascript
Python标准库urllib2的一些使用细节总结
2015/03/16 Python
利用Python操作消息队列RabbitMQ的方法教程
2017/07/19 Python
python tkinter canvas 显示图片的示例
2019/06/13 Python
python如何统计代码运行的时长
2019/07/24 Python
Anaconda 查看、创建、管理和使用python环境的方法
2019/12/03 Python
详解Python流程控制语句
2020/10/28 Python
韩国女装NO.1网店:STYLENANDA
2016/09/16 全球购物
IGK Hair官网:喷雾、洗发水、护发素等
2020/11/03 全球购物
行政助理岗位职责范文
2013/12/03 职场文书
开办饭店创业计划书
2013/12/28 职场文书
科研先进个人典型材料
2014/01/31 职场文书
数控技校生自我鉴定
2014/03/02 职场文书
校长个人总结
2015/03/03 职场文书
pandas中DataFrame数据合并连接(merge、join、concat)
2021/05/30 Python