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中list常用操作实例详解
Jun 03 Python
Python本地与全局命名空间用法实例
Jun 16 Python
Python Socket编程详细介绍
Mar 23 Python
Python实现输出程序执行进度百分比的方法
Sep 16 Python
python的一些加密方法及python 加密模块
Jul 11 Python
运用PyTorch动手搭建一个共享单车预测器
Aug 06 Python
python numpy之np.random的随机数函数使用介绍
Oct 06 Python
基于Python实现扑克牌面试题
Dec 11 Python
python Jupyter运行时间实例过程解析
Dec 13 Python
利用Python计算KS的实例详解
Mar 03 Python
Python 中如何使用 virtualenv 管理虚拟环境
Jan 21 Python
Python实现天气查询软件
Jun 07 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动态生成虚拟现实VRML网页
2006/10/09 PHP
基于PHP文件操作的详细诠释
2013/06/21 PHP
PHP实现原生态图片上传封装类方法
2016/11/08 PHP
jquery CSS选择器笔记
2010/03/29 Javascript
javascript与CSS复习(三)
2010/06/29 Javascript
MooTools 页面滚动浮动层智能定位实现代码
2011/08/23 Javascript
javascript继承之为什么要继承
2012/11/10 Javascript
基于jquery实现的图片在各种分辨率下未知的容器内上下左右居中
2014/05/11 Javascript
使用 js+正则表达式为关键词添加链接
2014/11/11 Javascript
JS实现仿google、百度搜索框输入信息智能提示的实现方法
2015/04/20 Javascript
基于javascript实现动态显示当前系统时间
2016/01/28 Javascript
jquery获取table指定行和列的数据方法(当前选中行、列)
2016/11/07 Javascript
vue router使用query和params传参的使用和区别
2017/11/13 Javascript
vue-awesome-swiper滑块插件使用方法详解
2017/11/27 Javascript
使用weixin-java-tools完成微信授权登录、微信支付的示例
2018/09/26 Javascript
vue实现数据控制视图的原理解析
2020/01/07 Javascript
vue data有值,但是页面{{}} 取不到值的解决
2020/11/09 Javascript
解决Mac安装scrapy失败的问题
2018/06/13 Python
使用python将图片格式转换为ico格式的示例
2018/10/22 Python
Pycharm以root权限运行脚本的方法
2019/01/19 Python
Python 获取 datax 执行结果保存到数据库的方法
2019/07/11 Python
pytorch 自定义卷积核进行卷积操作方式
2019/12/30 Python
捷克街头、运动和滑板一站式商店:BoardStar.cz
2019/10/06 全球购物
编程实现去掉XML的重复结点
2014/05/28 面试题
建筑施工实习自我鉴定
2013/09/19 职场文书
公司开业庆典主持词
2014/03/21 职场文书
信用卡逾期证明示例
2014/09/13 职场文书
2014年电信员工工作总结
2014/12/19 职场文书
2015年全国“爱牙日”宣传活动总结
2015/03/23 职场文书
2015年社区服务活动总结
2015/03/25 职场文书
缓存替换策略及应用(以Redis、InnoDB为例)
2021/07/25 Redis
Redis 常见使用场景
2021/08/30 Redis
pandas中关于apply+lambda的应用
2022/02/28 Python
JavaScript中的LHS和RHS分析详情
2022/04/06 Javascript
MySQL视图概念以及相关应用
2022/04/19 MySQL
win11自动弹出虚拟键盘怎么关闭? Win11关闭虚拟键盘的技巧
2023/01/09 数码科技