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 translator使用实例
Sep 06 Python
从零学python系列之从文件读取和保存数据
May 23 Python
python开发之函数定义实例分析
Nov 12 Python
Python request设置HTTPS代理代码解析
Feb 12 Python
python实现简易数码时钟
Feb 19 Python
pyqt 实现为长内容添加滑轮 scrollArea
Jun 19 Python
解析python实现Lasso回归
Sep 11 Python
python循环输出三角形图案的例子
Nov 22 Python
TensorFlow内存管理bfc算法实例
Feb 03 Python
PyQt5 控件字体样式等设置的实现
May 13 Python
keras.utils.to_categorical和one hot格式解析
Jul 02 Python
python使用tkinter实现透明窗体上绘制随机出现的小球(实例代码)
May 17 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
让你同时上传 1000 个文件 (二)
2006/10/09 PHP
火车采集器 免费版使出收费版本功能实现原理
2009/09/17 PHP
《PHP编程最快明白》第六讲:Mysql数据库操作
2010/11/01 PHP
PHP 正则表达式之正则处理函数小结(preg_match,preg_match_all,preg_replace,preg_split)
2012/10/05 PHP
在PHP中设置、使用、删除Cookie的解决方法
2013/05/06 PHP
php压缩和解压缩字符串的方法
2015/03/14 PHP
php5对象复制、clone、浅复制与深复制实例详解
2019/08/14 PHP
如何在centos8自定义目录安装php7.3
2019/11/28 PHP
IE6,IE7下js动态加载图片不显示错误
2010/07/17 Javascript
通过jQuery源码学习javascript(一)
2012/12/27 Javascript
js读取注册表的键值示例
2013/09/25 Javascript
Javascript冒泡排序算法详解
2014/12/03 Javascript
三个js循环的关键字示例(for与while)
2016/02/16 Javascript
ReactNative页面跳转实例代码
2016/09/27 Javascript
AngularJS中的缓存使用
2017/01/11 Javascript
Jil,高效的json序列化和反序列化库
2017/02/15 Javascript
vue iview实现动态路由和权限验证功能
2018/04/17 Javascript
react实现点击选中的li高亮的示例代码
2018/05/24 Javascript
Vue项目使用localStorage+Vuex保存用户登录信息
2019/05/27 Javascript
[32:26]EG vs IG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python读写Excel文件的实例
2013/11/01 Python
快速了解Python开发中的cookie及简单代码示例
2018/01/17 Python
详解Django的model查询操作与查询性能优化
2018/10/16 Python
Python之多进程与多线程的使用
2021/02/23 Python
利用HTML5+CSS3实现3D转换效果实例详解
2017/05/02 HTML / CSS
英国第一的滑雪服装和装备零售商:Snow+Rock
2020/02/01 全球购物
品学兼优的大学生自我评价
2013/09/20 职场文书
小学班主任培训方案
2014/06/04 职场文书
校本教研活动总结
2014/07/01 职场文书
土建施工员岗位职责
2014/07/16 职场文书
财务科长个人对照检查材料
2014/09/18 职场文书
成绩报告单家长评语
2014/12/30 职场文书
求职意向书范本
2015/05/11 职场文书
《童年的发现》教学反思
2016/02/18 职场文书
redis内存空间效率问题的深入探究
2021/05/17 Redis
详解如何使用Nginx解决跨域问题
2022/05/06 Servers