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之wxPython菜单使用详解
Sep 28 Python
跟老齐学Python之不要红头文件(2)
Sep 28 Python
用Python实现换行符转换的脚本的教程
Apr 16 Python
python实现自动重启本程序的方法
Jul 09 Python
Python使用poplib模块和smtplib模块收发电子邮件的教程
Jul 02 Python
python安装numpy&安装matplotlib& scipy的教程
Nov 02 Python
python打包生成的exe文件运行时提示缺少模块的解决方法
Oct 31 Python
Python生成器的使用方法和示例代码
Mar 04 Python
python使用html2text库实现从HTML转markdown的方法详解
Feb 21 Python
Python运算符+与+=的方法实例
Feb 18 Python
详细总结Python常见的安全问题
May 21 Python
浅谈Python中的函数(def)及参数传递操作
May 25 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目录导航文件代码
2006/10/09 PHP
php操作mongodb封装类与用法实例
2018/09/01 PHP
浅谈php使用curl模拟多线程发送请求
2019/03/08 PHP
laravel 实现根据字段不同值做不同查询
2019/10/23 PHP
不错的新闻标题颜色效果
2006/12/10 Javascript
asp.net下利用js实现返回上一页的实现方法小集
2009/11/24 Javascript
js动态创建表格,删除行列的小例子
2013/07/20 Javascript
JavaScript设置body高度为浏览器高度的方法
2015/02/09 Javascript
Javascript实现可旋转的圆圈实例代码
2015/08/04 Javascript
解决bootstrap导航栏navbar在IE8上存在缺陷的方法
2016/07/01 Javascript
浅谈jquery设置和获得checkbox选中的问题
2016/08/19 Javascript
jQuery购物网页经典制作案例
2016/08/19 Javascript
完美解决node.js中使用https请求报CERT_UNTRUSTED的问题
2017/01/08 Javascript
vue的安装及element组件的安装方法
2018/03/09 Javascript
解决iView中时间控件选择的时间总是少一天的问题
2018/03/15 Javascript
详解webpack自定义loader初探
2018/08/29 Javascript
python通过ElementTree操作XML获取结点读取属性美化XML
2013/12/02 Python
Python2中的raw_input() 与 input()
2015/06/12 Python
解决python 输出是省略号的问题
2018/04/19 Python
python3实现windows下同名进程监控
2018/06/21 Python
Python+pandas计算数据相关系数的实例
2018/07/03 Python
Python实现Word表格转成Excel表格的示例代码
2020/04/16 Python
Python性能测试工具Locust安装及使用
2020/12/01 Python
瑞典时尚耳机品牌:Urbanears
2017/07/26 全球购物
为有想象力的人提供的生活方式商店:Firebox
2018/06/04 全球购物
KIKO MILANO俄罗斯官网:意大利领先的化妆品和护肤品品牌
2021/01/09 全球购物
毕业生自我鉴定
2013/12/04 职场文书
销售找工作求职信
2013/12/20 职场文书
珍珠奶茶店创业计划书
2014/01/11 职场文书
校园安全标语
2014/06/07 职场文书
售后客服个人自我评价
2014/09/14 职场文书
党员批评与自我批评发言稿
2014/10/14 职场文书
学习走群众路线心得体会
2014/11/05 职场文书
2014年大堂经理工作总结
2014/11/21 职场文书
幼儿教师师德培训心得体会
2016/01/09 职场文书
python 调用js的四种方式
2021/04/11 Python