Почему в OpenCV (Python) я получаю 3-канальные изображения из изображения в градациях серого?

Я использую Python (2.7) и привязки для OpenCV 2.4.6 в Ubuntu 12.04

Я загружаю изображение

    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), что я ожидаю для 640x480полутоновой образ. Затем я сохраняю изображение:

    cv2.imwrite('gray.jpg', gray_image)

Я нахожусь на Linux, поэтому я попытался посмотреть на изображение с gThumb, который показывает все цветные каналы. Когда я возвращаю серое изображение обратно в OpenCV, у изображения снова есть три канала. Мне известен этот флаг для чтения изображений:

    CV_LOAD_IMAGE_GRAYSCALE - If set, always convert image to the grayscale one

Но это звучит так, как будто оно собирается ввести изображение в виде цветного изображения, а затем преобразовать его. Я портирую этот проект на RaspberryPi, поэтому не хочу, чтобы происходили ненужные операции.

РЕДАКТИРОВАТЬ: я сделал некоторые проверки времени и обнаружил, что загрузка изображения с использованием набора флагов 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-канальное изображение при записи на диск?

Заранее спасибо.

Ответы на вопрос(3)

Ваш ответ на вопрос