2015-06-29 35 views
0

我正在用python做一些計算機視覺,所以我使用opencv和matplotlib。我想切換到matplotlib查看圖像,但我發現圖像質量低於OpenCV imshow也沒有顯示圖像與正確的尺寸在屏幕上它們都是相同的大小。Matplotlib imshow與OpenCV相比質量低

這是我如何使用

img = cv2.imread('a.png',0) 
f = plt.figure(figsize=(img.shape[1],img.shape[0]), dpi=1) 
plt.axes([0,0,1,1]) 
plt.axis('false') 
plt.imshow(img,cmap="gray",interpolation=None) 

我與插值不同的值嘗試,但仍比OpenCV的質量非常低時,那裏顯示的圖像質量更好?

同樣在打印時,我得到的是與opencv寫入方法不同的低質量。

回答

2

您正在使圖形尺寸過大。 img.shape返回img中的行數和列數,但figsize使用英寸。

另外,您可能希望圖形具有與dpi = 1不同的分辨率。每英寸點數應該更像80,並且可能需要更高,具體取決於您將如何顯示圖像。

+0

那麼'dpi = 1'會使每英寸1個像素,所以我可以使用圖像像素作爲圖像大小,因爲現在像素=英寸,所以至少當我顯示圖像時我不認爲dpi與任何圖像有關圖像的質量(可能是寫在軸上的文字等)。無論如何,我發現製作'interpolation ='none''而不是'None'的質量要好得多。而且我可以通過使用figaspect(img)'來根據當前dpi的圖像大小獲取英寸,並且同時我仍然可以正確顯示文本,從而繞過'dpi = 1'的操作。 –