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编写简单网络爬虫抓取视频下载资源
Nov 04 Python
python装饰器decorator介绍
Nov 21 Python
Python双精度浮点数运算并分行显示操作示例
Jul 21 Python
Python Json模块中dumps、loads、dump、load函数介绍
May 15 Python
flask入门之文件上传与邮件发送示例
Jul 18 Python
python可视化实现KNN算法
Oct 16 Python
python实现的汉诺塔算法示例
Oct 23 Python
Python:slice与indices的用法
Nov 25 Python
Python 解决火狐浏览器不弹出下载框直接下载的问题
Mar 09 Python
python中yield的用法详解
Jan 13 Python
python+pytest接口自动化之token关联登录的实现
Apr 06 Python
Python TypeError: ‘float‘ object is not subscriptable错误解决
Dec 24 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
收音机频率指针指示不准确和灵敏度低问题
2021/03/02 无线电
PHPMyadmin 配置文件详解(配置)
2009/12/03 PHP
PHP的substr_replace将指定两位置之间的字符替换为*号
2011/05/04 PHP
如何用PHP实现插入排序?
2013/04/10 PHP
PHP加密扩展库Mcrypt安装和实例
2013/11/10 PHP
PHP中的use关键字概述
2014/07/23 PHP
js 关于=+与+=日期函数使用说明(赋值运算符)
2011/11/15 Javascript
javascript中获取下个月一号,是星期几
2012/06/01 Javascript
JS脚本根据手机浏览器类型跳转WAP手机网站(两种方式)
2015/08/04 Javascript
javascript中日期函数new Date()的浏览器兼容性问题
2015/09/05 Javascript
解决JS请求服务器gbk文件乱码的问题
2015/10/16 Javascript
简单理解vue中实例属性vm.$els
2016/12/01 Javascript
javascript 使用正则test( )第一次是 true,第二次是false
2017/02/22 Javascript
windows下vue-cli及webpack搭建安装环境
2017/04/25 Javascript
QQ跳转支付宝并自动领红包脚本(最新)
2018/06/22 Javascript
nodejs基础之常用工具模块util用法分析
2018/12/26 NodeJs
微信小程序实现锚点功能
2019/11/20 Javascript
js实现简易计算器小功能
2020/11/18 Javascript
JavaScript实现手风琴效果
2021/02/18 Javascript
python3图片转换二进制存入mysql
2013/12/06 Python
设置python3为默认python的方法
2018/10/31 Python
Python 从列表中取值和取索引的方法
2018/12/25 Python
在pycharm 中添加运行参数的操作方法
2019/01/19 Python
python中使用while循环的实例
2019/08/05 Python
Pytorch释放显存占用方式
2020/01/13 Python
python 检测图片是否有马赛克
2020/12/01 Python
Html5实现iPhone开机界面示例代码
2013/06/30 HTML / CSS
皇家道尔顿官网:Royal Doulton
2017/12/06 全球购物
高中化学教学反思
2014/01/13 职场文书
教师党员一句话承诺
2014/03/28 职场文书
党的作风建设心得体会
2014/10/22 职场文书
2014年协会工作总结
2014/11/22 职场文书
教师个人年度总结
2015/02/11 职场文书
小学生大队委竞选稿
2015/11/20 职场文书
《秦兵马俑》教学反思
2016/02/24 职场文书
浅谈python中的多态
2021/06/15 Python