【问题标题】:While using keras load_img function, matplotlib as plt doesn't function使用 keras load_img 函数时,matplotlib as plt 不起作用
【发布时间】:2019-12-03 08:47:03
【问题描述】:

我一直在研究这个图像分类(水印检测)任务 我正在尝试加载图像文件夹

from keras.preprocessing.image import load_img
import cv2 
import matplotlib.pyplot as plt
DATADIR = 'F:\IMP.DATA\Task\Watermark_test_data'
CATEGORIES=['Watermark','No Watermark']

for category in CATEGORIES:
        path= os.path.join(DATADIR,category)#path to test folder    
        for img in os.listdir(path):
            img_array = cv2.imread(os.path.dirname(os.path.join(path,img), cv2.IMREAD_GRAYSCALE)
            plt.imshow(img_array,cmap="gray")
            plt.show(img_array)
            break
        break

img = load_img('F:/IMP.DATA/Task/Watermark_test_data/Watermark/1.jpg')
print(type(img))
print(img.format)
print(img.mode)
print(img.size)
img.show()
import numpy as np
import matplotlib.pyplot as plt
from keras.models import Sequential
from keras.layers import Dense,Dropout,Flatten
from keras.layers.convolutional import Conv2D,MaxPooling2D
from keras.utils import np_utils
from keras import backend as K
import os 
import cv2

DATADIR = 'F:\IMP.DATA\Task\Watermark_test_data'
CATEGORIES=['Watermark','No Watermark']

for category in CATEGORIES:
    path= os.path.join(DATADIR,category)#path to test folder    
    for img in os.listdir(path):
        img_array = cv2.imread(os.path.dirname(os.path.join(path,img), cv2.IMREAD_GRAYSCALE)
        plt.imshow(img_array,cmap="gray")
        plt.show(img_array)
        break
    break

我一直在使用 cv2 和 load_img 来加载图像,但在这两种情况下,我在 matplotlib 中都会出错 plt.imshow (函数) 这是我得到的错误

File "<ipython-input-51-2b07cb64d5a1>", line 11
    plt.imshow(img_array,cmap="gray")
      ^
SyntaxError: invalid syntax

我看不出语法有什么问题

【问题讨论】:

    标签: matplotlib image-processing file-upload loadimage


    【解决方案1】:

    SyntaxError 是由该行中缺少右括号引起的:

    img_array = cv2.imread(os.path.dirname(os.path.join(path,img), cv2.IMREAD_GRAYSCALE)
    

    os.path.dirname(os.path.join(path,img)后加)即可解决。

    【讨论】:

    • 效果很好,但现在我在plt.imshow(img_array, cmap="gray") 上得到了TypeError: Image data of dtype object cannot be converted to float,所以我假设img_array = cv2.imread(os.path.dirname(os.path.join(path,img)), cv2.IMREAD_GRAYSCALE) 无法读取文件
    • @PratyushJain 这也是我的猜测。确保 os.path.dirname(os.path.join(path,img)) 返回正确的路径。
    • os.access(r'F:\IMP.DATA\Task\Watermark_test_data\1.jpg',os.R_OK) 返回False 我也收到此错误PermissionError: [Errno 13] Permission denied: 'F:/IMP.DATA/Task/Watermark_test_data/Watermark' 我尝试从该线程解决https://stackoverflow.com/questions/36434764/permissionerror-errno-13-permission-denied 但我仍然遇到相同的错误,我也收到OSError: [WinError 123]我也尝试了其他一些方法
    • @PratyushJain 是os.path.dirname(os.path.join(path,img))返回的路径吗?您是否使用os.F_OK 而不是os.R_OK 进行了测试以查看该文件是否存在?如果确实如此,但您仍然收到错误,您可以发布一个单独的问题,以便其他人可以帮助您(这篇文章是关于 SyntaxError 的,现在似乎已经解决,所以请考虑 accepting my answer)。
    • 对不起,我是网站新手。非常感谢,我会发布一个新问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-29
    • 2019-06-13
    • 1970-01-01
    • 2019-08-28
    • 2018-02-06
    相关资源
    最近更新 更多