cv2 imread не возвращает ничего, когда не использует обратную косую черту - PullRequest
0 голосов
/ 14 февраля 2020

Привет! Я хочу преобразовать изображение в оттенки серого на основе альфа-значений, но функция cv2 imread возвращает следующую ошибку:

TypeError: объект 'NoneType' не может быть подписан

import cv2
import matplotlib.pyplot as plt

img = cv2.imread('C:/Users/sgunes/Downloads/Cyrillic/Ж/5a793d87b7ef9.png', cv2.IMREAD_UNCHANGED)
img_gray = 255 - img[:, :, 3]

plt.imshow(img_gray, cmap='gray', vmin=0, vmax=255)
plt.show()

И когда Я отлаживаю его, мои объекты img получают None. Как мне это исправить? Спасибо за ваше внимание.

1 Ответ

2 голосов
/ 14 февраля 2020

Согласно документации OpenCV :

Функция imread загружает изображение из указанного файла и возвращает его. Если изображение не может быть прочитано (из-за отсутствующего файла, неправильных разрешений, неподдерживаемого или неверного формата), функция возвращает пустую матрицу (Mat :: data == NULL).

Так что это означает, что либо вы ввели неправильный путь, либо у вас нет прав доступа, либо изображение не читается.

Возможно, из-за вашего заголовка возникла проблема с неверным путем. Если вы хотите использовать backsla sh, вы можете добавить 'r' перед строкой (имеется в виду raw) или экранировать каждый backsla sh (чтобы '\' стало '\\'). Обратите внимание, что если вы используете необработанную строку (r ''), вы все равно не можете завершить sh вашу строку с помощью обратного слэса sh.

img = cv2.imread(r'C:\Users\sgunes\Downloads\Cyrillic\Ж\5a793d87b7ef9.png', cv2.IMREAD_UNCHANGED)

или

img = cv2.imread('C:\\Users\\sgunes\\Downloads\\Cyrillic\\Ж\\5a793d87b7ef9.png', cv2.IMREAD_UNCHANGED)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...