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中的装饰器使用
Jun 20 Python
Python OpenCV获取视频的方法
Feb 28 Python
Python for循环生成列表的实例
Jun 15 Python
python numpy和list查询其中某个数的个数及定位方法
Jun 27 Python
Python中函数参数调用方式分析
Aug 09 Python
Python实现查询某个目录下修改时间最新的文件示例
Aug 29 Python
pandas读取csv文件,分隔符参数sep的实例
Dec 12 Python
Python3实现的判断环形链表算法示例
Mar 07 Python
Python + Flask 实现简单的验证码系统
Oct 01 Python
python3反转字符串的3种方法(小结)
Nov 07 Python
Python 脚本拉取 Docker 镜像问题
Nov 10 Python
Python实现打包成库供别的模块调用
Jul 13 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开启安全模式后禁用的函数集合
2011/06/26 PHP
ThinkPHP跳转页success及error模板实例教程
2014/07/17 PHP
php银联网页支付实现方法
2015/03/04 PHP
PHP实现四种基础排序算法的运行时间比较(推荐)
2016/08/11 PHP
浅谈PHP中关于foreach使用引用变量的坑
2016/11/14 PHP
PHP实现双链表删除与插入节点的方法示例
2017/11/11 PHP
thinkphp5 加载静态资源路径与常量的方法
2017/12/24 PHP
YII框架学习笔记之命名空间、操作响应与视图操作示例
2019/04/30 PHP
不错的一个日期输入 动态
2006/11/06 Javascript
jQuery 处理网页内容的实现代码
2010/02/15 Javascript
javascript 广告后加载,加载完页面再加载广告
2010/11/25 Javascript
关于setInterval、setTimeout在jQuery中的使用注意事项
2011/09/28 Javascript
PHP配置文件php.ini中打开错误报告的设置方法
2015/01/09 PHP
vue组件 $children,$refs,$parent的使用详解
2017/07/31 Javascript
jQuery的时间datetime控件在AngularJs中的使用实例(分享)
2017/08/17 jQuery
简单谈谈js的数据类型
2017/09/25 Javascript
详解node child_process模块学习笔记
2018/01/24 Javascript
Vue中如何实现proxy代理
2018/04/20 Javascript
React.js绑定this的5种方法(小结)
2018/06/05 Javascript
解决layui中的form表单与button的点击事件冲突问题
2018/08/15 Javascript
vue模块拖拽实现示例代码
2019/03/09 Javascript
个人小程序接入支付解决方案
2019/05/23 Javascript
解决vue-pdf查看pdf文件及打印乱码的问题
2020/11/04 Javascript
python抓取豆瓣图片并自动保存示例学习
2014/01/10 Python
Python3.4解释器用法简单示例
2019/03/22 Python
python代码中怎么换行
2020/06/17 Python
python装饰器三种装饰模式的简单分析
2020/09/04 Python
移动端HTML5实现文件上传功能【附代码】
2016/03/25 HTML / CSS
JRE、JDK、JVM之间的关系怎样
2012/05/16 面试题
幼儿园的门卫岗位职责
2014/04/10 职场文书
大学生通用个人自我评价
2014/04/27 职场文书
年终晚会活动方案
2014/08/21 职场文书
2014年工人工作总结
2014/11/25 职场文书
2015年社区中秋节活动总结
2015/03/23 职场文书
毕业生捐书活动倡议书
2015/04/27 职场文书
共青团优秀团员申请书(范文)
2019/08/15 职场文书