使用jupyter(IPython)開發opencv

趙安家發表於2019-03-04

opencv 的預設使用highgui顯示圖片,
用命令列執行,可以正常顯示

cv.namedWindow("Image")
cv.imshow("Image",img)複製程式碼

用jupyter則有無反應

本文環境

import sys
import cv2
print("python版本:%s"% sys.version)
print("opencv版本:%s"% cv2.__version__)複製程式碼

輸出

python版本:3.5.3 |Continuum Analytics, Inc.| (default, May 15 2017, 10:43:23) [MSC v.1900 64 bit (AMD64)]
opencv版本:3.2.0複製程式碼

安裝opencv

如果使用Anaconda,則開啟 Anaconda Prompt,activate python35切換到相應的python環境

pip install --upgrade setuptools
pip install numpy Matplotlib
pip install opencv-python複製程式碼

參考 Python環境搭建之OpenCV,但是在jupyter中,執行該博文下一段demo程式碼,無反應

經過一番google,已解決,現整理如下

jupyter顯示opencv圖片

lenna 圖為例


import cv2
from matplotlib import pyplot as plt

img = cv2.imread(`lenna1.png`)

show_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) 

plt.imshow(show_img)
plt.show()複製程式碼

參考自 Quickie: Mix up OpenCV and Jupyter (iPython Notebook) 和官方 Using Matplotlib

opencv讀取網路圖片

%matplotlib inline
import numpy as np
import cv2
from matplotlib import pyplot as plt
import urllib.request as ul

data = None

try:

    data = ul.urlopen(`http://www.mupin.it/wp-content/uploads/2012/06/lenna1.png`).read()

except Exception as e:

    print("Could not download the image: %s " %( e.message))

else:
    data =  np.fromstring(data, np.uint8)
    img_data =  cv2.imdecode(data, cv2.IMREAD_COLOR )
    img_data = cv2.cvtColor(img_data, cv2.COLOR_BGR2RGB)
    plt.imshow(img_data)
    plt.show()複製程式碼

本示例用的環境是python:3.5.3 和 opencv:3.2.0,在opencv3.x中已經不存在cv2.CV_LOAD_IMAGE_COLOR,根據 Python OpenCV load image from byte string ,改成cv2.IMREAD_COLOR

大部分程式碼 參考自 Quickie: Grab an image from the web with urllib2 and OpenCV

OpenCV入門教程

部落格 anjia.ml/2017/07/16/…
掘金 juejin.im/post/596b3e…
簡書 www.jianshu.com/p/69af8b1dc…

相關文章