image_data1 = cv2.imread(img1) TypeError: bad argument type for built-in operation
时间: 2024-05-16 22:13:50 浏览: 85
这个错误提示意味着 `cv2.imread()` 函数的第一个参数类型错误。通常情况下,该函数需要一个字符串类型的参数,用于指定要读取的图像文件的路径。请确保你的 `img1` 变量是一个字符串类型的文件路径,例如:
```
img1 = 'path/to/image.jpg'
```
如果你已经确认 `img1` 变量是一个字符串类型的文件路径,那么请检查该文件是否存在,或者检查你的程序是否具有访问该文件的权限。
相关问题
x_train_path = os.path.join(base_dir, "image") y_train_path = os.path.join(base_dir, 'label') x_train = cv2.imread(x_train_path, cv2.IMREAD_COLOR) y_train = cv2.imread(y_train_path, cv2.IMREAD_GRAYSCALE) #DATASET_PATH = 'D:\pythonProject' #x_train, y_train = load_dataset(DATASET_PATH) # Normalizing data. x_train = (x_train - 127.5) / 127.5 y_train = (y_train - 127.5) / 127.5TypeError: unsupported operand type(s) for -: 'NoneType' and 'float'
这个错误通常是由于 `cv2.imread()` 没有读取到图片导致的。可以使用以下方法检查读取到的图片是否为 None:
```
print(x_train is None)
print(y_train is None)
```
如果输出结果中有一个为 True,那么说明该图片没有被正确读取。可以检查图片路径是否正确,以及图片格式是否正确。另外,如果图片路径中包含中文,也可能会导致无法正确读取图片。您可以尝试将路径改为英文或使用 `glob` 库来读取所有图片。
def imread(filename, flatten=False): """根据图片路径,将图片读取为cv2的图片处理格式.""" if not os.path.isfile(filename): raise FileNotExistError("File not exist: %s" % filename) # choose image readin mode: cv2.IMREAD_UNCHANGED=-1, cv2.IMREAD_GRAYSCALE=0, cv2.IMREAD_COLOR=1, readin_mode = cv2.IMREAD_GRAYSCALE if flatten else cv2.IMREAD_COLOR if PY3: img = cv2.imdecode(np.fromfile(filename, dtype=np.uint8), readin_mode) else: filename = filename.encode(sys.getfilesystemencoding()) img = cv2.imread(filename, readin_mode) return img
这是一个名为imread的函数,用于读取图像并将其转换为OpenCV的图像处理格式。函数接受两个参数:filename(图片路径)和flatten(是否将图像展平,默认为False)。
函数首先检查给定的文件是否存在,如果不存在,则会引发一个FileNotExistError异常。
然后,函数根据flatten参数的值选择图像读取模式。如果flatten为True,则选择cv2.IMREAD_GRAYSCALE,将图像解码为灰度图像;否则,选择cv2.IMREAD_COLOR,将图像解码为彩色图像。
接下来,函数使用cv2.imdecode函数将图像解码为OpenCV的图像格式。在Python 3中,使用np.fromfile函数从文件中读取图像数据,并使用cv2.imdecode进行解码。在Python 2中,首先将文件名编码为系统文件编码格式,然后使用cv2.imread函数进行解码。
最后,函数返回解码后的图像。
这个函数可以方便地读取图像并根据需要选择解码方式(灰度或彩色)。
阅读全文