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 相关文章推荐
仅用50行代码实现一个Python编写的计算器的教程
Apr 17 Python
Python读csv文件去掉一列后再写入新的文件实例
Dec 28 Python
Python设计模式之命令模式简单示例
Jan 10 Python
python寻找list中最大值、最小值并返回其所在位置的方法
Jun 27 Python
Python使用sax模块解析XML文件示例
Apr 04 Python
Python Celery多队列配置代码实例
Nov 22 Python
Python3搭建http服务器的实现代码
Feb 11 Python
详解Ubuntu环境下部署Django+uwsgi+nginx总结
Apr 02 Python
Python numpy矩阵处理运算工具用法汇总
Jul 13 Python
Numpy实现卷积神经网络(CNN)的示例
Oct 09 Python
在PyCharm中安装PaddlePaddle的方法
Feb 05 Python
理解python中装饰器的作用
Jul 21 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(2)
2006/10/09 PHP
PHP下编码转换函数mb_convert_encoding与iconv的使用说明
2009/12/16 PHP
php与java通过socket通信的实现代码
2013/10/21 PHP
PHP使用正则表达式清除超链接文本
2013/11/12 PHP
PHP的fsockopen、pfsockopen函数被主机商禁用的解决办法
2014/07/08 PHP
php获取指定数量随机字符串的方法
2017/02/06 PHP
Yii2中多表关联查询hasOne hasMany的方法
2017/02/15 PHP
深入浅析PHP的session反序列化漏洞问题
2017/06/15 PHP
jQuery创建插件的代码分析
2011/04/14 Javascript
javascript实现简单的Map示例介绍
2013/12/23 Javascript
多个$(document).ready()的执行顺序实例分析
2014/07/26 Javascript
c#+jquery实现获取radio和checkbox的值
2020/09/12 Javascript
JavaScript获取当前cpu使用率的方法
2015/12/15 Javascript
用自定义图片代替原生checkbox实现全选,删除以及提交的方法
2016/10/18 Javascript
js/jquery控制页面动态加载数据 滑动滚动条自动加载事件的方法
2017/02/08 Javascript
three.js加载obj模型的实例代码
2017/11/10 Javascript
Node.js使用cookie保持登录的方法
2018/05/11 Javascript
JavaScript怎样在删除前添加确认弹出框?
2019/05/27 Javascript
javascript设计模式 ? 状态模式原理与用法实例分析
2020/04/22 Javascript
Node登录权限验证token验证实现的方法示例
2020/05/25 Javascript
vue-quill-editor插入图片路径太长问题解决方法
2021/01/08 Vue.js
python获取当前时间对应unix时间戳的方法
2015/05/15 Python
Python3中类、模块、错误与异常、文件的简易教程
2017/11/20 Python
python实现微信小程序自动回复
2018/09/10 Python
Python实现的读取文件内容并写入其他文件操作示例
2019/04/09 Python
python实现单链表的方法示例
2019/09/03 Python
使用Python内置模块与函数进行不同进制的数的转换
2020/04/26 Python
8款使用 CSS3 实现超炫的 Loading(加载)的动画效果
2015/03/17 HTML / CSS
详解Canvas事件绑定
2018/06/27 HTML / CSS
国贸专业的职业规划范文
2014/01/23 职场文书
超市端午节活动方案
2014/01/23 职场文书
2014年高考决心书
2014/03/11 职场文书
餐馆开业致辞
2015/08/01 职场文书
pytorch损失反向传播后梯度为none的问题
2021/05/12 Python
python playwright 自动等待和断言详解
2021/11/27 Python
Vue h函数的使用详解
2022/02/18 Vue.js