Ответ 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()
Есть ли способ использовать и строить с opencv2 с записью ipython?
Я новичок в анализе изображений python. Я решил пойти с потоком работы с ноутбуком, чтобы сделать хорошую запись, когда я обрабатываю ее, и она неплохо работает с использованием matplotlib/pylab для создания сюжетов.
Первоначальное препятствие, которое у меня было, заключалось в том, как строить сюжеты внутри ноутбука. Легко, просто используйте магию:
%matplotlib inline
Позже я захотел выполнить манипуляции с интерактивными сюжетами, но заговор в отдельном окне всегда зависал. Хорошо, я снова узнал, что вам нужно использовать магию. Вместо простого импорта модулей:
%pylab
Теперь я перешел на работу с opencv. Я возвращаюсь к той же самой проблеме, где я либо хочу построить встроенную графику, либо использовать специальные интерактивные окна в зависимости от задачи. Существует ли аналогичная магия? Есть ли другой способ заставить все работать? Или я застрял и вам нужно просто вернуться к запуску программы из IDLE?
Как примечание: я знаю, что opencv установлен правильно. Во-первых, потому что у меня не было никаких ошибок при установке или импорте модуля cv2. Во-вторых, потому что я могу читать изображения с помощью cv2, а затем строить их с чем-то другим.
Это мой пустой шаблон:
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()
Существует также такая небольшая функция, которая была использована в ноутбуке 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)
Каждый раз, когда вам нужно отображать изображение в ячейке