Ipython notebook (jupyter), opencv (cv2) и построение графика?

Есть ли способ использовать и строить с opencv2 с записью ipython?

Я новичок в анализе изображений python. Я решил пойти с потоком работы с ноутбуком, чтобы сделать хорошую запись, когда я обрабатываю ее, и она неплохо работает с использованием matplotlib/pylab для создания сюжетов.

Первоначальное препятствие, которое у меня было, заключалось в том, как строить сюжеты внутри ноутбука. Легко, просто используйте магию:

%matplotlib inline

Позже я захотел выполнить манипуляции с интерактивными сюжетами, но заговор в отдельном окне всегда зависал. Хорошо, я снова узнал, что вам нужно использовать магию. Вместо простого импорта модулей:

%pylab

Теперь я перешел на работу с opencv. Я возвращаюсь к той же самой проблеме, где я либо хочу построить встроенную графику, либо использовать специальные интерактивные окна в зависимости от задачи. Существует ли аналогичная магия? Есть ли другой способ заставить все работать? Или я застрял и вам нужно просто вернуться к запуску программы из IDLE?

Как примечание: я знаю, что opencv установлен правильно. Во-первых, потому что у меня не было никаких ошибок при установке или импорте модуля cv2. Во-вторых, потому что я могу читать изображения с помощью cv2, а затем строить их с чем-то другим.

Ответ 1

Это мой пустой шаблон:

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()

Ответ 2

Существует также такая небольшая функция, которая была использована в ноутбуке Google 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)

Каждый раз, когда вам нужно отображать изображение в ячейке