2017-09-06 116 views
0

在回答this question的形象,我想在其原來的顏色來顯示圖像,因此從這一行的代碼刪除gray參數:Python的 - 顯示與原來的顏色

plt.imshow(im_out, 'gray') 

做當但是,我得到的圖像顯示黃色和紫色的顏色,而不是圖像的原始顏色。

我應該怎麼做才能以原始顏色顯示圖像?

謝謝。

編輯1我碰到this tutorial,看來,我應該使用:

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

但是,我這樣做的時候,我有以下幾點:

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 

如何解決這個問題?

EDIT 2以上的原因是該圖像的讀取爲在原始代碼如下:

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

所以,我簡單地除去0

+0

它從文檔目前尚不清楚,但刪除了0想必默認爲「1」每C++文檔:http://docs.opencv.org/2.4/modules/highgui/doc/reading_and_writing_images_and_video.html?highlight=imread#cv2.imread –

+1

也',plt.imshow(img,'灰色')'指示matplotlib使用'gray'顏色表顯示圖像'img';即暗示「img」是灰度圖像。否則,在「顏色」圖像上指定顏色圖表是沒有意義的。 –

回答

0

基於this tutorial,爲了解決這個問題,我不得不BGR轉換爲RGB,如下:

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

這與您的問題中的錯誤線路有何不同? (或者是最後一次編輯作爲答案?)btw,請注意,opencv也有自己的imshow函數,您可以使用它來代替matplotlib,它可以繞過這個問題。 (或者同樣,pyplot有一個可以用來代替opencv的imread函數) –