Python实现使用卷积提取图片轮廓功能示例


Posted in Python onMay 12, 2018

本文实例讲述了Python实现使用卷积提取图片轮廓功能。分享给大家供大家参考,具体如下:

一、实例描述

将彩色的图片生成带边缘化信息的图片。

本例中先载入一个图片,然后使用一个“3通道输入,1通道输出的3*3卷积核”(即sobel算子),最后使用卷积函数输出生成的结果。

二、代码

'''''
载入图片并显示
首先将图片放到代码的同级目录下,通过imread载入,然后将其显示并打印出来
'''
import matplotlib.pyplot as plt # plt 用于显示图片
import matplotlib.image as mpimg # mpimg 用于读取图片
import numpy as np
import tensorflow as tf
myimg = mpimg.imread('2.jpg') # 读取和代码处于同一目录下的图片
#myimg = mpimg.imread('img.jpg') # 读取和代码处于同一目录下的图片
plt.imshow(myimg) # 显示图片
plt.axis('off') # 不显示坐标轴
plt.show()
print(myimg.shape)
'''''
上面这段代码输出(960, 720, 3),可以看到,载入图片的维度是960*720大小,3个通道
'''
'''''
这里需要手动将sobel算子填入卷积核里。使用tf.constant函数可以将常量直接初始化到Variable中,因为是3个通道,所以sobel卷积核的每个元素都扩成了3个。
注意:sobel算子处理过的图片并不保证每个像素都在0~255之间,所以要做一次归一化操作(即将每个值减去最小的结果,再除以最大值与最小值的差),让生成的值都在[0,1]之间,然后在乘以255
'''
#full=np.reshape(myimg,[1,3264,2448,3])
full=np.reshape(myimg,[1,960,720,3])
#inputfull = tf.Variable(tf.constant(1.0,shape = [1, 3264, 2448, 3]))
inputfull = tf.Variable(tf.constant(1.0,shape = [1, 960, 720, 3]))
filter = tf.Variable(tf.constant([[-1.0,-1.0,-1.0], [0,0,0], [1.0,1.0,1.0],
                  [-2.0,-2.0,-2.0], [0,0,0], [2.0,2.0,2.0],
                  [-1.0,-1.0,-1.0], [0,0,0], [1.0,1.0,1.0]],shape = [3, 3, 3, 1]))
#步长为1*1,padding为SAME表明是同卷积的操作。
op = tf.nn.conv2d(inputfull, filter, strides=[1, 1, 1, 1], padding='SAME') #3个通道输入,生成1个feature ma
o=tf.cast( ((op-tf.reduce_min(op))/(tf.reduce_max(op)-tf.reduce_min(op)) ) *255 ,tf.uint8)
with tf.Session() as sess:
  sess.run(tf.global_variables_initializer() )
  t,f=sess.run([o,filter],feed_dict={ inputfull:full})
  #print(f)
  #t=np.reshape(t,[3264,2448])
  t=np.reshape(t,[960,720])
  plt.imshow(t,cmap='Greys_r') # 显示图片
  plt.axis('off') # 不显示坐标轴
  plt.show()

三、运行结果

Python实现使用卷积提取图片轮廓功能示例

四、说明

可以看出,sobel的卷积操作之后,提取到一张含有轮廓特征的图像。

再查看一下图片属性

Python实现使用卷积提取图片轮廓功能示例

注:这里用到了tensorflow模块,可使用pip命令安装:

pip install tensorflow

如果遇到以下红字错误,可以看到提示更新pip到更新的版本(不报错可直接跳过到下一标题)。

Python实现使用卷积提取图片轮廓功能示例

更新pip到最新版本:

python -m pip install --upgrade pip

PS:截至目前,tensorflow尚不支持python3.6版本,建议使用兼容性较好的Python3.5版本

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python获取豆瓣电影简介代码分享
Jan 16 Python
python实现网页链接提取的方法分享
Feb 25 Python
Python的dict字典结构操作方法学习笔记
May 07 Python
Python使用Srapy框架爬虫模拟登陆并抓取知乎内容
Jul 02 Python
Python中矩阵库Numpy基本操作详解
Nov 21 Python
python 对dataframe下面的值进行大规模赋值方法
Jun 09 Python
Python使用numpy产生正态分布随机数的向量或矩阵操作示例
Aug 22 Python
python ipset管理 增删白名单的方法
Jan 14 Python
分享8个非常流行的 Python 可视化工具包
Jun 05 Python
django-rest-swagger的优化使用方法
Aug 29 Python
基于Python中的yield表达式介绍
Nov 19 Python
PyCharm 安装与使用配置教程(windows,mac通用)
May 12 Python
在cmd中运行.py文件: python的操作步骤
May 12 #Python
对命令行模式与python交互模式介绍
May 12 #Python
python执行系统命令后获取返回值的几种方式集合
May 12 #Python
在CMD命令行中运行python脚本的方法
May 12 #Python
在cmd命令行里进入和退出Python程序的方法
May 12 #Python
对python中执行DOS命令的3种方法总结
May 12 #Python
python 信息同时输出到控制台与文件的实例讲解
May 11 #Python
You might like
php模拟post行为代码总结(POST方式不是绝对安全)
2012/02/22 PHP
PHP删除目录及目录下所有文件的方法详解
2013/06/06 PHP
smarty基础之拼接字符串的详解
2013/06/18 PHP
php 利用array_slice函数获取随机数组或前几条数据
2015/09/30 PHP
PHP使用redis位图bitMap 实现签到功能
2019/10/08 PHP
JavaScript RegExp方法获取地址栏参数(面向对象)
2009/03/10 Javascript
js表格分页实现代码
2009/09/18 Javascript
JavaScript 替换Html标签实现代码
2009/10/14 Javascript
用JQuery在网页中实现分隔条功能的代码
2012/08/09 Javascript
阻止事件(取消浏览器对事件的默认行为并阻止其传播)
2013/11/03 Javascript
从零学JSON之JSON数据结构
2014/05/19 Javascript
JavaScript给url网址进行encode编码的方法
2015/03/18 Javascript
微信小程序 slider的简单实例
2017/04/19 Javascript
React复制到剪贴板的示例代码
2017/08/22 Javascript
vue使用mint-ui实现下拉刷新和无限滚动的示例代码
2017/11/06 Javascript
微信小程序页面跳转功能之从列表的item项跳转到下一个页面的方法
2017/11/27 Javascript
Vue源码分析之Vue实例初始化详解
2019/08/25 Javascript
countUp.js实现数字滚动效果
2019/10/18 Javascript
jquery html添加元素/删除元素操作实例详解
2020/05/20 jQuery
python启动办公软件进程(word、excel、ppt、以及wps的et、wps、wpp)
2009/04/09 Python
python如何实现excel数据添加到mongodb
2015/07/30 Python
详解python eval函数的妙用
2017/11/16 Python
python多维数组切片方法
2018/04/13 Python
python3 实现一行输入,空格隔开的示例
2018/11/14 Python
python中多个装饰器的调用顺序详解
2019/07/16 Python
pytorch实现mnist分类的示例讲解
2020/01/10 Python
基于Python+QT的gui程序开发实现
2020/07/03 Python
莫斯科隐形眼镜网上商店:Linzi
2019/07/22 全球购物
初中地理教学反思
2014/01/11 职场文书
初一体育教学反思
2014/01/29 职场文书
国旗下的演讲稿
2014/05/08 职场文书
个人授权委托书模板
2014/09/14 职场文书
领导班子个人对照检查材料(群众路线)
2014/09/26 职场文书
2015年禁毒宣传活动总结
2015/03/25 职场文书
莫言诺贝尔获奖感言(全文)
2015/07/31 职场文书
先进个人主要事迹范文
2015/11/04 职场文书