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 查找文件夹下所有文件 实现代码
Jul 01 Python
python插入排序算法的实现代码
Nov 21 Python
零基础写python爬虫之爬虫框架Scrapy安装配置
Nov 06 Python
Python2实现的LED大数字显示效果示例
Sep 04 Python
Python中Threading用法详解
Dec 27 Python
python购物车程序简单代码
Apr 18 Python
python实现求两个字符串的最长公共子串方法
Jul 20 Python
Python元组知识点总结
Feb 18 Python
python读取图片的方式,以及将图片以三维数组的形式输出方法
Jul 03 Python
python内存动态分配过程详解
Jul 15 Python
python使用多线程编写tcp客户端程序
Sep 02 Python
python函数装饰器之带参数的函数和带参数的装饰器用法示例
Nov 06 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 debug 安装技巧
2011/04/30 PHP
php学习笔记 PHP面向对象的程序设计
2011/06/13 PHP
PHP输出当前进程所有变量/常量/模块/函数/类的示例
2013/11/07 PHP
PHP的AES加密算法完整实例
2016/07/20 PHP
php读取本地json文件的实例
2018/03/07 PHP
AppBaseJs 类库 网上常用的javascript函数及其他js类库写的
2010/03/04 Javascript
Whatever:hover 无需javascript让IE支持丰富伪类
2010/06/29 Javascript
js 完美图片新闻轮转效果,腾讯大粤网首页图片轮转改造而来
2011/11/21 Javascript
Jquery 模拟用户点击超链接或者按钮的方法
2013/10/25 Javascript
ActiveX控件与Javascript之间的交互示例
2014/06/04 Javascript
纯js模拟div层弹性运动的方法
2015/07/27 Javascript
javascript中 try catch用法
2015/08/16 Javascript
JavaScript面向对象编写购物车功能
2016/08/19 Javascript
JS简单实现浮动窗口效果示例
2016/09/07 Javascript
JS实现的表头列头固定页面功能示例
2017/01/10 Javascript
vue中的event bus非父子组件通信解析
2017/10/27 Javascript
使用rollup打包JS的方法步骤
2018/12/05 Javascript
vue + any-touch实现一个iscroll 实现拖拽和滑动动画效果
2019/04/08 Javascript
[02:50]【扭转乾坤,只此一招】DOTA2永雾林渊版本开启新篇章
2020/12/22 DOTA
使用go和python递归删除.ds store文件的方法
2014/01/22 Python
Django Highcharts制作图表
2016/08/27 Python
pandas 数据归一化以及行删除例程的方法
2018/11/10 Python
opencv python统计及绘制直方图的方法
2019/01/21 Python
django 中的聚合函数,分组函数,F 查询,Q查询
2019/07/25 Python
Python实现元素等待代码实例
2019/11/11 Python
Python xpath表达式如何实现数据处理
2020/06/13 Python
Python Opencv图像处理基本操作代码详解
2020/08/31 Python
Linux的主要特性
2016/09/03 面试题
销售辞职报告范文
2014/01/12 职场文书
化学教师教学反思
2014/01/17 职场文书
中英文求职信范文
2014/01/27 职场文书
初一体育教学反思
2014/01/29 职场文书
《青蛙看海》教学反思
2014/04/23 职场文书
就业意向书
2014/07/29 职场文书
2015年银行信贷员工作总结
2015/05/19 职场文书
2016幼儿园教师年度考核评语
2015/12/01 职场文书