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去掉字符串中重复字符的方法
Feb 27 Python
Flask框架的学习指南之用户登录管理
Nov 20 Python
Python中字符串的修改及传参详解
Nov 30 Python
利用Python读取文件的四种不同方法比对
May 18 Python
Python实现的读取/更改/写入xml文件操作示例
Aug 30 Python
对python:print打印时加u的含义详解
Dec 15 Python
python numpy 按行归一化的实例
Jan 21 Python
python如何实现代码检查
Jun 28 Python
在Python中构建增广矩阵的实现方法
Jul 01 Python
Python实现手机号自动判断男女性别(实例解析)
Dec 22 Python
Python插入Elasticsearch操作方法解析
Jan 19 Python
深入了解Python enumerate和zip
Jul 16 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
yii操作session实例简介
2014/07/31 PHP
php使用mysqli和pdo扩展,测试对比连接mysql数据库的效率完整示例
2019/05/09 PHP
php命名空间设计思想、用法与缺点分析
2019/07/17 PHP
laravel5.5安装jwt-auth 生成token令牌的示例
2019/10/24 PHP
jQuery 获取URL参数的插件
2010/03/04 Javascript
初学js插入节点appendChild insertBefore使用方法
2011/07/04 Javascript
一个JavaScript处理textarea中的字符成每一行实例
2014/09/22 Javascript
jQuery 和 CSS 的文本特效插件集锦
2014/12/12 Javascript
jQuery实现下拉框选择图片功能实例
2015/08/08 Javascript
nodejs模块nodemailer基本使用-邮件发送示例(支持附件)
2017/03/28 NodeJs
JS实现禁止高频率连续点击的方法【基于ES6语法】
2017/04/25 Javascript
JS中的数组转变成JSON格式字符串的方法
2017/05/09 Javascript
微信小程序中post方法与get方法的封装
2017/09/26 Javascript
koa2使用ejs和nunjucks作为模板引擎的使用
2018/11/27 Javascript
nodejs npm错误Error:UNKNOWN:unknown error,mkdir 'D:\Develop\nodejs\node_global'at Error
2019/03/02 NodeJs
利用angular自动编译andriod APK的绕坑经历分享
2019/03/08 Javascript
详解Element-UI中上传的文件前端处理
2019/08/07 Javascript
nodejs实现百度舆情接口应用示例
2020/02/07 NodeJs
vue输入框使用模糊搜索功能的实现代码
2020/05/26 Javascript
Vue基于iview table展示图片实现点击放大
2020/08/05 Javascript
理解python中生成器用法
2017/12/20 Python
django 多数据库配置教程
2018/05/30 Python
pygame游戏之旅 按钮上添加文字的方法
2018/11/21 Python
python+opencv打开摄像头,保存视频、拍照功能的实现方法
2019/01/08 Python
python框架flask表单实现详解
2019/11/04 Python
关于python中的xpath解析定位
2020/03/06 Python
Django serializer优化类视图的实现示例
2020/07/16 Python
详解Django中views数据查询使用locals()函数进行优化
2020/08/24 Python
图解CSS3制作圆环形进度条的实例教程
2016/05/26 HTML / CSS
天猫精选:上天猫,就够了
2016/09/21 全球购物
领先的英国注册在线药房 :Simply Meds Online
2019/03/28 全球购物
英国珠宝网站Argento: PANDORA、Olivia Burton和Nomination等
2020/05/08 全球购物
在weblogic中发布ejb需涉及到哪些配置文件
2012/01/17 面试题
房屋出租委托书格式
2014/09/23 职场文书
植物园观后感
2015/06/11 职场文书
优质服务心得体会(共4篇)
2016/01/22 职场文书