2016-06-16 3 views
1

Я пытаюсь извлечь кадр из видео и отображать каждый кадр в качестве изображения. Для сравнения я попробовал подзадачу. Чтение изображения RGB отличается от графика. Где я могу ошибаться?Почему подзаголовок меняет цвет моего изображения?

vid = cv2.VideoCapture(file1) 
num_frames = int(vid.get(cv2.cv.CV_CAP_PROP_FRAME_COUNT)) 
fig, ax = plt.subplots(nrows=1, ncols=3) 
plt.ion() 
for i in range(num_frames): 
    f,img = vid.read(i) 
    cv2.imshow("V",img) 

RGB-изображение правильно читать, но когда

for i in range(num_frames): 
    f,img = vid.read(i) 
    ax[0].imshow(img) 
    ax[1].imshow(img) 
    ax[2].imshow(img) 
    plt.draw() 
    plt.pause(0.01) 

цвет отображения изображений изменяется subplot imagecv2 image

+0

это, вероятно, связано с отображение изображения в BGR, а не RGB – user3404344

ответ

0

Попробуйте

ax[0].imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)) 
+0

Th Причина, по которой это происходит, заключается в том, что вы используете imread из cv2 для чтения изображения, которое считывает изображения в формате BGR, и вы показываете изображение с помощью pyplot из matplotlib, который отображает изображение в формате RGB, следовательно, происходит обращение в каналах Red и Синий. Надеюсь, теперь ясно –

Смежные вопросы