img_shape = cv2.imread(osp.join(img_folder, '000001.jpg')).shape AttributeError: 'NoneType' object has no attribute 'shape'
时间: 2023-11-04 07:55:44 浏览: 154
根据你提供的引用内容,你遇到的问题是关于图像处理的错误。错误信息显示 'NoneType' object has no attribute 'shape',这意味着在读取图像时返回了一个None值,而不是图像对象。这可能是因为图像文件路径不正确或文件不存在导致的。请检查img_folder路径和图像文件名,并确保图像文件存在于指定路径中。
相关问题
def Normalization(): img_path = "results" save_path = "Normalresult" img_names = os.listdir(img_path) for img_name in img_names: img = os.path.join(img_path, img_name) img = cv2.imread(img) result = np.zeros(img.shape, dtype=np.float32) result = img / 255.0 # cv2.normalize(img, result, alpha=0, beta=1, norm_type=cv2.NORM_MINMAX, dtype=cv2.CV_32F) print(result) image = np.uint8(result * 255.0) print((img == image).all()) # cv2.imshow("norm",result) # cv2.waitKey(1000) cv2.imwrite(os.path.join(save_path, img_name), image)
这段代码的作用是将指定路径下的所有图片进行归一化处理,并将处理后的图片保存到指定的保存路径中。具体来说,代码首先使用 os 库中的 listdir 函数获取指定路径下所有图片的文件名,接着使用循环遍历每个图片文件名。在循环中,使用 cv2 库中的 imread 函数读取当前图片,然后创建一个与当前图片大小相同的全零数组 result,并将当前图片的像素值除以 255.0,从而将像素值变为 [0,1] 的范围。接着,代码将 result 数组中的像素值乘以 255.0 并转换为整型,得到归一化后的图片 image,并使用 cv2 库中的 imwrite 函数将 image 保存到指定的保存路径中。最后,代码对比原始图片和归一化后的图片的像素值是否一致,并输出结果。
for filename in calib_files: img = self.imread(filename) if img is None: raise FileNotFoundError(filename, "没有发现!") if len(img.shape) == 2: gray = img else: gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) if self.img_size is None: self.img_size = gray.shape[::-1] else: assert gray.shape[::-1] == self.img_size
这段代码使用了一个for循环遍历calib_files中的每个文件名,并进行以下操作:
1. 调用self.imread函数读取文件,并将结果赋值给img变量。
2. 如果img为空,即读取文件失败,则抛出FileNotFoundError异常。
3. 如果img是二维的(即灰度图像),则将其赋值给gray变量。
4. 如果img是三维的(即彩色图像),则将其转换为灰度图像,并将结果赋值给gray变量。
5. 如果self.img_size为None,则将gray的shape取反(即高度和宽度交换)作为img_size。
6. 如果self.img_size不为None,则使用assert语句检查gray的shape取反是否等于img_size。如果不等于,则抛出AssertionError异常。
这段代码的作用是读取一组图像文件,并将它们转换为相同大小的灰度图像。如果读取文件失败或者图像大小不一致,则会抛出异常。
阅读全文