介绍
小编给大家分享一下使用Python实现使用卷积提取图片轮廓功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!
具体如下:
<强>一、实例描述强>
将彩色的图片生成带边缘化信息的图片。
本例中先载入一个图片,然后使用一个“3通道输入,1通道输出的3 * 3卷积核”(即sobel算子),最后使用卷积函数输出生成的结果。
<强>二、代码强>
& # 39; & # 39; & # 39; & # 39; & # 39; 载入图片并显示 首先将图片放到代码的同级目录下,通过imread载入,然后将其显示并打印出来 & # 39;& # 39;& # 39; import matplotlib.pyplot  as plt #, plt 用于显示图片 import matplotlib.image  as mpimg #, mpimg 用于读取图片 import numpy  as np import tensorflow  as tf 时间=myimg mpimg.imread (& # 39; 2. jpg # 39;), #,读取和代码处于同一目录下的图片 # myimg =, mpimg.imread (& # 39; img.jpg& # 39;), #,读取和代码处于同一目录下的图片 plt.imshow (myimg), #,显示图片 plt.axis(& # 39;从# 39;),#,不显示坐标轴 plt.show () 打印(myimg.shape) & # 39;& # 39;& # 39;& # 39;& # 39; 上面这段代码输出(960,,720,,3),可以看的到,载入图片的维度是960 * 720大小,3个通道 & # 39;& # 39;& # 39; & # 39;& # 39;& # 39;& # 39;& # 39; 这里需要手动将sobel算子填入卷积核里。使用tf.constant函数可以将常量直接初始化到变量中,因为是3个通道,所以sobel卷积核的每个元素都扩成了3个。 注意:sobel算子处理过的图片并不保证每个像素都在0 ~ 255之间,所以要做一次归一化操作(即将每个值减去最小的结果,再除以最大值与最小值的差),让生成的值都在[0,1]之间,然后在乘以255 & # 39;& # 39;& # 39; #全=np.reshape (myimg [1, 3264、2448、3]) 完整的=np.reshape (myimg,[3] 1960720年) # 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,填充为相同表明是同卷积的操作。 op =, tf.nn.conv2d (inputfull,过滤器,,进步=[1,1,1,1),,填充=& # 39;相同# 39;),# 3个通道输入,生成1个feature 马 o=tf.cast (, ((op-tf.reduce_min (op))/(tf.reduce_max (op) -tf.reduce_min (op)),), * 255,, tf.uint8) with tf.Session (), as 税: sess.run才能(tf.global_variables_initializer (),) ,,t, f=sess.run (o,过滤器,feed_dict={, inputfull:完整}) #才能打印(f) # t=才能np.reshape (t (3264、2448)) t=才能np.reshape (t) [960720]) plt.imshow才能(t,提出=& # 39;Greys_r& # 39;), #,显示图片 plt.axis才能(& # 39;从# 39;),#,不显示坐标轴 plt.show才能()
<强>三、运行结果强>
<强>四,说明强>
可以看的出,索贝尔的卷积操作之后,提取到一张含有轮廓特征的图像。
再查看一下图片属性
<强>注:强>这里用到了<代码> tensorflow 代码>模块,可使用pip命令安装:
pip install tensorflow
如果遇到以下红字错误,可以看到提示更新皮普到更新的版本(不报错可直接跳过到下一标题)。
更新皮普到最新版本:
python -m pip install ——upgrade pip
以上是“使用Python实现使用卷积提取图片轮廓功能”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!