opencv小笔记(TypeError: unsupported operand type(s) for +: ‘NoneType‘ and ‘NoneType‘)

今天在学习OpenCV的算数操作时,进行图像加法时,运行了下列程序

import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt

# 1 读取图像
img1 = cv.imread("D://02.cs//view.jpg")
img2 = cv.imread("D://02.cs//rain.jpg")

# 2 加法操作
img3 = cv.add(img1,img2) # cv中的加法
img4 = img1+img2 # 直接相加

# 3 图像显示
fig,axes=plt.subplots(nrows=1,ncols=2,figsize=(10,8),dpi=100)
axes[0].imshow(img3[:,:,::-1])
axes[0].set_title("cv")
axes[1].imshow(img4[:,:,::-1])
axes[1].set_title("direct")
plt.show()

但是却出现了下边的报错

TypeError: unsupported operand type(s) for +: 'NoneType' and 'NoneType'

本次报错的意思是

类型错误:+不支持的操作数类型:“无类型”和“无类型”

+不能操作两个NoneType,所以问题出现在操作数类型上,可能读取的图像被返回到了一个None值。

我们从读取图像的角度出发

cv.imread()

该API的参数有:

①要读取的图像

②读取方式的标志

cv.IMREAD*COLOR:以彩色模式加载图像,任何图像的透明度都将被忽略。这是默认参数

cv.IMREAD*GRAYSCALE:以灰度模式加载图像

cv.IMREAD_UNCHANGED:包括alpha通道的加载图像模式。

我们应该注意的是,在我学习的代码示例中,是没有第二个参数的,所以应该是采用了默认参数即用彩色模式加载图像,同时对于读取图像的操作来说,如果图像加载的路径有错误,不会报错,而是会返回一个None值即一个空值,等下次调用这个img的时候才会出现错误,所以这里必须保证图像是存在的。

经过上述分析后,我去检查了一下图像加载的路径,最后突然发现,竟然是路径中含有中文路径的原因

你可能感兴趣的:(opencv,计算机视觉,python)