小白求助对于图片resize的python编程一致报错,有没有大佬帮忙看看

import os
import cv2
import numpy as np
IMAGE_SIZE = 64

#按照指定图像大小调整尺寸, 这个函数的功能是判断图片是不是正方形,如果不是则增加短边的长度使之变成正方形
# 这样再调用cv2.resize() 函数就可以实现等比例缩放了。因为我们制定缩放的比例就是64*64,只有缩放之前图像为正方形才能确保图像不失真。
def resize_image(image, height=IMAGE_SIZE, width=IMAGE_SIZE):
    top, bottom, left, right = (0, 0, 0, 0)
    #获取图像尺寸h和w 最后一个是channel
    h, w, c = image.shape
    # print(h,w,c)
    #对于长宽不相等的图片,找到最长的一边
    longest_edge = max(h,w)
    #计算短边需要增加多少像素宽度使其与长边等长
    if h < longest_edge:
        dh = longest_edge-h
        top = dh//2
        bottom = dh-top
    elif w < longest_edge:
        dw = longest_edge-w
        left = dw//2
        right = dw-left
    else:
        pass
    #RGB颜色
    BLACK = [0, 0, 0]
    #给图像增加边界,让图片长,宽等长,cv2.BORDER_CONSTANT指定边界颜色由value制定
    constant = cv2.copyMakeBorder(image, top, bottom, left, right, cv2.BORDER_CONSTANT, value=BLACK)
    #调整图像大小并返回
    return cv2.resize(constant, (height, width))

images = []
labels = []
def read_path(path_name):
    #这一步的操作是得到所有图片的绝对路径
    for dir_item in os.listdir(path_name): #遍历出所有的照片名字
        #从初始路径开始叠加,合并成可识别的操作路径
        full_path = os.path.abspath(os.path.join(path_name, dir_item))
        if os.path.isdir(full_path): #如果是文件夹,继续递归调用
            read_path(full_path) #递归调用
        else: #文件
            if dir_item.endswith('.jpg'):
                image = cv2.imread(full_path)
                image = resize_image(image, IMAGE_SIZE, IMAGE_SIZE)
                #放开这个代码,可以看到 resize_image()函数的实际调用效果
                cv2.imwrite('1.jpg', image)
                images.append(image)
                labels.append(path_name)
# 从指定路径读取训练数据
def load_dataset(path_name):
    images, labels = read_path(path_name)

    # print(images, labels)
    #将输入的所有图片转成四维数组,尺寸为(图片数量*IMAGE_SIZE*IMAGE_SIZE*3)
    #图片为64*64像素,一个像素3个颜色值(RGB)
    images = np.array(images)
    # print(images.shape)
    #标注数据,‘zq’文件夹下都是我的脸部图像,全部指定为0,另外一个文件夹下是樊磊的,全部指定为1
    labels = np.array([0 if label.endswith('zq') else 1 for label in labels])
    return images, labels


if __name__ == '__main__':
    images, labels = read_path('data')

Traceback (most recent call last):
  File "C:/Users/ZQ/PycharmProjects/face test/4.resize.py", line 67, in <module>
    images, labels = read_path('data')
TypeError: cannot unpack non-iterable NoneType object
 

函数调用时,如没有return语句,打印输出的数据为None,代码中的函数read_path(path_name)中缺了return,要加上return images,labels,这样在调用时才有数据返回。

您好,我是问答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632