使用tensorflow将图片灰度化以及遇到的坑解决

 更新时间:2024年02月27日 15:02:48   作者:hello689  
这篇文章主要介绍了使用tensorflow将图片灰度化以及遇到的坑解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

tensorflow将图片灰度化及遇到的坑

用tensorflow将图片灰度化,很简单的一个问题,几句代码就OK了。

但是这里边有很多坑,稍不留神,半天都不一定找得到原因。

我下面说说我遇到的坑

先给代码,再介绍我遇到的坑:

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
from keras_preprocessing.image import load_img,img_to_array
%matplotlib inline
 
 
image_name = 'cat1.jpg'
image = load_img(image_name)
#将图片转换为数组
image = img_to_array(image)
#转为黑白
image = tf.image.rgb_to_grayscale(image)
image = tf.squeeze(image,2)
plt.imshow(image)

步骤很简单:

  • 读取彩色图片
  • 转换为黑白图片
  • 显示这个黑白图片

就这简简单单的几步,我却遇到了很多问题,不过在解决问题的过程中又学到了很多,还是很有收获的。 

坑一

#坑一、不将image转换为数组,直接用rgb_to_grayscale方法,将图片转为灰度图片
image_name = 'cat1.jpg'
image = load_img(image_name)
#转为黑白
image = tf.image.rgb_to_grayscale(image)

执行上边代码会报错如下图,不能直接将一个图片转化为一个tensor。

这里需要先将image对象转化为数组array。

然后通过百度学会了img_to_array()方法。

图1、坑一错误信息

坑二

#坑二:最后图片无法显示
image_name = 'cat1.jpg'
image = load_img(image_name)
#将图片转换为数组
image = img_to_array(image)
#转为黑白
image = tf.image.rgb_to_grayscale(image)
plt.imshow(image)

错误信息:

图2、坑二错误

原图是三维的,图片维度为(480,500,3),转为黑白后图片的shape变成了(480,500,1)。

猜测,黑白的是不是就两维。于是进行了降维操作 学习了tf.squeeze()方法, 最后降维后,大功告成,结束!

补充

我当时看了image的类型,本以为是因为转换为array后,里边值的类型为float,所以才不会显示图片。

当时就把float类型转为了int型。后来才发现,其实不管array里的值类型是float还是int,都会显示。

所以第一版成功运行的代码是把图片类型也转换了,代码如下,第六行多了一句将图片转为int型的代码。

image_name = 'cat1.jpg'
image = load_img(image_name)
plt.imshow(image)
#将图片转换为数组
image = img_to_array(image)
image = image.astype(dtype='uint8')
#转为黑白
image = tf.image.rgb_to_grayscale(image)
#降维
image = tf.squeeze(image,2)
plt.imshow(image)

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python类成员继承重写的实现

    Python类成员继承重写的实现

    这篇文章主要介绍了Python类成员继承重写的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • 宝塔(BT面板)部署Python项目图形化完整步骤

    宝塔(BT面板)部署Python项目图形化完整步骤

    这篇文章主要介绍了宝塔(BT面板)部署Python项目的完整步骤,包括安装宝塔面板、创建Python运行环境、上传项目代码、安装依赖、配置反向代理、设置静态文件和跨域等步骤,需要的朋友可以参考下
    2025-12-12
  • 用实例说明python的*args和**kwargs用法

    用实例说明python的*args和**kwargs用法

    python的*args和**kwargs如何用,看了下面的例子你就清楚了。
    2013-11-11
  • 浅谈pyqt5在QMainWindow中布局的问题

    浅谈pyqt5在QMainWindow中布局的问题

    今天小编就为大家分享一篇浅谈pyqt5在QMainWindow中布局的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • 解决Django中多条件查询的问题

    解决Django中多条件查询的问题

    今天小编就为大家分享一篇解决Django中多条件查询的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • Python利用模糊哈希实现对比文件相似度

    Python利用模糊哈希实现对比文件相似度

    对比两个文件相似度,python中可通过difflib.SequenceMatcher/ssdeep/python_mmdt/tlsh实现,<BR>在大量需要对比,且文件较大时,需要更高的效率,可以考虑模糊哈希,本文就来和大家详细聊聊
    2023-01-01
  • 使用keras2.0 将Merge层改为函数式

    使用keras2.0 将Merge层改为函数式

    这篇文章主要介绍了使用keras2.0 将Merge层改为函数式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • python使用scapy扫描内网IP或端口的方法实现

    python使用scapy扫描内网IP或端口的方法实现

    Scapy是一个Python程序,使用户能够发送,嗅探和剖析并伪造网络数据包,本文主要介绍了python使用scapy扫描内网IP或端口的方法实现,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10
  • Python2.x版本中cmp()方法的使用教程

    Python2.x版本中cmp()方法的使用教程

    这篇文章主要介绍了Python2.x版本中cmp()方法的使用教程,在Python3.x版本中该方法不再被内置,需要的朋友可以参考下
    2015-05-05
  • 零基础使用Python读写处理Excel表格的方法

    零基础使用Python读写处理Excel表格的方法

    这篇文章主要介绍了Python读写处理Excel表格,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05

最新评论