2017-09-06 23 views
0

In der Antwort auf this question angezeigt, wollte ich das Bild in seinen ursprünglichen Farben anzuzeigen, und so entfernt, um die gray Parameter aus dieser Codezeile:Python - das Bild mit den Originalfarben

plt.imshow(im_out, 'gray') 

Wenn tun Dies jedoch ich bekomme das Bild mit gelben und violetten Farben im Gegensatz zu den ursprünglichen Farben des Bildes angezeigt.

Was soll ich tun, um das Bild mit seinen Originalfarben anzuzeigen?

Danke.

EDIT 1 Ich kam in this tutorial, und scheint, dass ich verwenden sollte:

plt.imshow(cv2.cvtColor(im_out, cv2.COLOR_BGR2RGB)) 

Allerdings, wenn ich dies tat, habe ich folgendes:

Calculated scale difference: 0.99 
Calculated rotation difference: 44.51 
OpenCV Error: Assertion failed (scn == 3 || scn == 4) in cvtColor, file /home/user/opencv/modules/imgproc/src/color.cpp, line 10606 
Traceback (most recent call last): 
    File "align_surf.py", line 47, in <module> 
    deskew() 
    File "align_surf.py", line 9, in deskew 
    plt.imshow(cv2.cvtColor(im_out, cv2.COLOR_BGR2RGB)) 
cv2.error: /home/user/opencv/modules/imgproc/src/color.cpp:10606: error: (-215) scn == 3 || scn == 4 in function cvtColor 

Wie kann ich das beheben dieses Problem?

EDIT 2 Der Grund der oben war, dass das Bild gelesen wurde, wie im ursprünglichen Code folgt:

orig_image = cv2.imread('1.jpg', 0) 

Also, ich 0 einfach entfernt.

+0

es ist aus der Dokumentation nicht klar, aber die 0 vermutlich standardmäßig auf ‚1‘ als das Entfernen pro die C++ Dokumentation: http://docs.opencv.org/2.4/modules/highgui/doc/reading_and_writing_images_and_video.html?highlight=imread#cv2.imread –

+1

auch, 'plt.imshow (img, 'grau')' anweist matplotlib, um das Bild 'img' mit der' grey' Colormap anzuzeigen; d.h. die Implikation ist, dass "img" ein Graustufenbild ist. Anderenfalls macht das Diktieren einer Colormap auf ein "Color" -Bild keinen Sinn. –

Antwort

0

Basierend auf this tutorial, um das Problem zu beheben, musste ich BGR-RGB konvertieren, wie folgt:

plt.imshow(cv2.cvtColor(im_out, cv2.COLOR_BGR2RGB)) 
+0

Wie unterscheidet sich dies von der fehlerhaften Zeile in Ihrer Frage? (Oder war der letzte Schnitt als Antwort gedacht?) Übrigens, opencv hat auch eine eigene Imshow-Funktion, die Sie anstelle von Matplotlib verwenden können, was dieses Problem umgangen hätte. (oder genauso, pyplot hat eine neue Funktion, die Sie anstelle von opencv verwenden können) –

Verwandte Themen