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中定义结构体的方法
Mar 04 Python
python多重继承新算法C3介绍
Sep 28 Python
Python编程中装饰器的使用示例解析
Jun 20 Python
python3人脸识别的两种方法
Apr 25 Python
python利用selenium进行浏览器爬虫
Apr 25 Python
Python 动态导入对象,importlib.import_module()的使用方法
Aug 28 Python
python3 pathlib库Path类方法总结
Dec 26 Python
解决Keras 中加入lambda层无法正常载入模型问题
Jun 16 Python
高考考python编程是真的吗
Jul 20 Python
如何在scrapy中集成selenium爬取网页的方法
Nov 18 Python
用python批量下载apk
Dec 29 Python
Python基础之元组与文件知识总结
May 19 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实现mysql数据库备份类
2008/03/20 PHP
PHP数组内存耗用太多问题的解决方法
2010/04/05 PHP
php strcmp使用说明
2010/04/22 PHP
PHP register_shutdown_function函数的深入解析
2013/06/03 PHP
php函数指定默认值方法的小例子
2013/12/04 PHP
php实现的农历算法实例
2015/08/11 PHP
javascript delete 使用示例代码
2010/03/29 Javascript
IE8 chrome中table隔行换色解决办法
2010/07/09 Javascript
DIV外区域Click后关闭DIV的实现代码
2011/12/21 Javascript
html中的input标签的checked属性jquery判断代码
2012/09/19 Javascript
JavaScript中合并数组的N种方法
2014/09/16 Javascript
jQuery中is()方法用法实例
2015/01/06 Javascript
JavaScript 动态加载脚本和样式的方法
2015/04/13 Javascript
编写高质量JavaScript代码的基本要点
2016/03/02 Javascript
浅析JS操作DOM的一些常用方法
2016/05/13 Javascript
原生js封装二级城市下拉列表的实现代码
2016/06/16 Javascript
vue分页组件table-pagebar使用实例解析
2020/11/15 Javascript
JavaScript与ActionScript3两者的同性与差异性
2016/09/22 Javascript
ES6深入理解之“let”能替代”var“吗?
2017/06/28 Javascript
基于webpack 实用配置方法总结
2017/09/28 Javascript
JS中利用FileReader实现上传图片前本地预览功能
2018/03/02 Javascript
vue 注册组件的使用详解
2018/05/05 Javascript
通过jquery.cookie.js实现记住用户名、密码登录功能
2018/06/20 jQuery
vue实现循环切换动画
2018/10/17 Javascript
javascript实现智能手环时间显示
2020/09/18 Javascript
Python模拟登录验证码(代码简单)
2016/02/06 Python
解决出现Incorrect integer value: '' for column 'id' at row 1的问题
2017/10/29 Python
Python Numpy 数组的初始化和基本操作
2018/03/13 Python
python批量处理txt文件的实例代码
2020/01/13 Python
PyCharm设置注释字体颜色以及是否倾斜的操作
2020/09/16 Python
实例讲解CSS3中Transform的perspective属性的用法
2016/04/22 HTML / CSS
Oasis服装官网:时尚女装在线
2020/07/09 全球购物
小学毕业感言150字
2014/02/05 职场文书
师德建设实施方案
2014/03/21 职场文书
2015暑假实习报告范文
2015/07/13 职场文书
退休欢送会致辞
2015/07/31 职场文书