2017-01-21 6 views
0

Я пытаюсь прочитать образы «.jpg» в python, используя cv2.imread() в массив numpy. Код кажется мне хорошим, но когда я показываю изображения с помощью plt.imshow(), я вижу, что изображение не отображается правильно после того, как я скопировал изображение в массив. Не уверен, что я делаю неправильно здесь. Что мне не хватает?OpenCV - Изображение не отображается после numpy copy

Вот код:

import cv2 
import os 
import pandas as pd 
import numpy as np 

import matplotlib.pyplot as plt 
%matplotlib inline 

# Get current working directory 
cwd = os.getcwd() 
print(cwd) 

# Read the csv file into a data frame 
driving_log_df = pd.read_csv('driving_log.csv') 
print(driving_log_df.shape) 

X_data_set = np.empty([len(driving_log_df['Center'])*3, 32, 32, 3]) 
Y_data_set = np.empty(len(driving_log_df['Center'])*3) 
print(X_data_set.shape) 
print(Y_data_set.shape) 

# Path to images 
images_path = cwd + "/IMG" 
print(images_path) 

# Index 
index = 0 

for file in os.listdir(images_path): 
    image = cv2.imread(os.path.join(images_path, file), cv2.IMREAD_COLOR)   
    image = cv2.resize(image, (32, 32)) 

    # OpenCV reads images in the BGR format, convert them into RGB 
    image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) 

    # Copy the image 
    X_data_set[index] = np.copy(image_rgb) 

    # Display images 
    if(index==0): 
     figure1 = plt.figure() 
     plt.imshow(image_rgb)   
     figure2 = plt.figure() 
     plt.imshow(X_data_set[0]) 

    index = index + 1 

Также прилагаются изображения отображается.

Image being Copied Image after Copy

ответ

0

Порядок оси в CV2 является BGR. Поэтому вам нужно np.transpose to rgb.

+0

Я использую это утверждение cv2.cvtColor (изображение, cv2.COLOR_BGR2RGB), чтобы преобразовать изображение из BGR в RGB. –

+0

Извините, не видел этого. Я не использую CV2, но имел аналогичные проблемы с RGB/BGR. Я должен проверить, что входы на это 32 бит (каждый пиксель не 32 * 32). Или попробуйте с другими пакетами, такими как подушка, если вам действительно не нужен CV2 - я попробовал один раз и отказался от таких проблем! – simon

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