2016-01-06 180 views
12

有沒有辦法使用ipython筆記本使用opencv2進行繪圖?Ipython筆記本(jupyter),opencv(cv2)和繪圖?

我是相當新的python圖像分析。我決定和筆記本工作流程一起做好記錄,並且使用matplotlib/pylab進行繪圖工作,並且一直在很好地進行繪圖。

我最初的一個障礙是如何在筆記本中繪製東西。簡單,只需使用魔法:

%matplotlib inline 

後來,我想用交互式圖表進行操作,但是在專用窗口中繪圖總是會凍結。好的,我再次瞭解到你需要使用魔法。而不是僅僅導入模塊:

%pylab 

現在我已經開始使用opencv了。我現在回到了同樣的問題,我要麼想內聯或者根據手頭的任務使用專用的交互式窗口。是否有類似的魔術使用?有沒有其他的方法可以讓事情奏效?或者我卡住了,需要回到從IDLE運行程序?

作爲備註:我知道opencv已經正確安裝。首先,因爲我沒有安裝或導入cv2模塊的錯誤。其次,因爲我可以用cv2讀取圖像,然後用其他東西繪製它們。

+0

我發現,命令「cv2.waitKey()」之後的「cv2.imshow()」命令周圍的凍結問題的外窗變 - 但不知道爲什麼。我也看到了這裏提到的其他幾個命令:http://txt.arboreus.com/2012/07/11/highgui-opencv-window-from-ipython.html – Fire

+0

我不確定是否可以嵌入cv2 namedWindow IPython筆記本,因爲它是一個C++框架。可能沒有爲cv2.imshow編寫後端。我會使用pylab的imshow進行嵌入。這個cv2.startWindowThread()是否適用於筆記本電腦?我好奇。 – otterb

+0

它沒有爲我工作。空白的外部窗口彈出並凍結。 – Fire

回答

9

這是我的空模板:

import cv2 
import matplotlib.pyplot as plt 
import numpy as np 
import sys 
%matplotlib inline 

im = cv2.imread('IMG_FILENAME',0) 
h,w = im.shape[:2] 
print im.shape 
plt.imshow(im,cmap='gray') 
plt.show() 
+0

非常好!真的需要這個 –

+0

什麼可以使用? – Moondra

+0

h和w對應於高度和寬度圖像大小 – themadmax

0

另外還有一點小功能使用到谷歌Deepdream筆記本:

import cv2 
import numpy as np 
from IPython.display import clear_output, Image, display 
from cStringIO import StringIO 
import PIL.Image 

def showarray(a, fmt='jpeg'): 
    a = np.uint8(np.clip(a, 0, 255)) 
    f = StringIO() 
    PIL.Image.fromarray(a).save(f, fmt) 
    display(Image(data=f.getvalue())) 

然後,你可以這樣做:

img = cv2.imread("an_image.jpg") 

簡而言之:

showarray(img) 

每次需要呈現在單元格中的圖像時

相關問題