Я использую Python (2.7) и привязок для OpenCV 2.4.6 на Ubuntu 12.04В OpenCV (Python), почему я получаю 3-канальные изображения из изображения в оттенках серого?
Я загрузить изображение
image = cv2.imread('image.jpg')
я затем проверить форму матрицы изображения
print image.shape
Я получаю (480, 640, 3), что я ожидаю для цветного изображения 640x480. Затем я преобразую изображение в оттенки серого и снова проверю фигуру.
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
print gray_image.shape
я (480, 640, 1), что я рассчитывать на 640х480 оттенки серого изображения. Затем я сохранить изображение:
cv2.imwrite('gray.jpg', gray_image)
Я нахожусь на Linux, так что я пытался смотреть на изображение с gThumb, который показывает все цветовые каналы. Когда я возвращаю серое изображение в OpenCV, изображение снова имеет три канала. Я знаю этот флаг для чтения изображений:
CV_LOAD_IMAGE_GRAYSCALE - If set, always convert image to the grayscale one
Но это звучит, как он собирается принести в изображении в виде цветного изображения, а затем преобразовать его. Я переношу этот проект на RaspberryPi, поэтому я не хочу, чтобы произошли ненужные действия.
EDIT: Я сделал некоторые проверки времени, и я обнаружил, что загрузка изображения с использованием установленного флага CV_LOAD_IMAGE_GRAYSCALE приводит к загрузке изображения в два раза быстрее, независимо от ввода изображения.
Using a 3072 x 4608 x 3 image
0.196774959564 seconds with default loading
0.0931899547577 seconds with CV_LOAD_IMAGE_GRAYSCALE
Проблема, кажется, что OpenCV создает 3 канал JPG выход на есть ли у меня черно-белая матрица изображения или нет!
Какое другое приложение можно использовать, чтобы удостовериться, что я получаю одно изображение с 8-битным каналом JPG? (Возможно, gThumb неправильно сообщает каналы).
Если изображение не является единственным каналом, то почему OpenCV сохраняет изображение в градациях серого на 3-канальное изображение на диске?
Заранее спасибо.
Спасибо, похоже, что gThumb также дублирует слои. Я не могу отметить ваш ответ, потому что у меня недостаточно очков повторения. – Steve
Сказав все, каково решение сохранять изображения в одном канальном формате? (предполагается, что нам нужно сохранить изображение в одном канале) – Saman
выглядит как cv2.IMREAD_GRAYSCALE - это путь в эти дни вместо cv2.CV_LOAD_IMAGE_GRAYSCALE –