PythonでOpenCVをいれて、イメージを表示するまで | コンピューターの勉強会・研修ネタ

コンピューターの勉強会・研修ネタ

 コンピューターの勉強会や研修の元になりそうなネタの話を書きます。

テーマ:
今、このパソコンに入っているPythonがOpenCVできるようなので、
イメージ表示させようとしたら、

【Python】openCVのcv2.imshow()でエラー error: (-215) size.width>0 && size.height>0 in function cv::imshow
http://oregengo.hatenablog.com/entry/2016/09/24/195322

に書いてあるエラーになり、どうも入っているものがあやしいので、
入れなおそうとしたら、いろいろあったので、メモ

(以下、新規に入れるものとして話を始めています。
 なので、実際には、今入っているものをアンインストールした後、
 後述するcv2.pydを削除して、その後、以下のことをしています)

--------------

■そもそも、PythonでOpenCVするには
・とりあえずAnacondaいれてみようか
・OpenCVでpythonのライブラリをとってくる
・プログラミング
以下、その順番で・・・

--------------

■とりあえずAnacondaいれてみようか

Anaconda で Python 環境をインストールする
http://qiita.com/t2y/items/2a3eb58103e85d8064b6


にあるように

https://www.continuum.io/downloads

にいくとことまではOK。でもその先!インストーラーは

バージョン3.6 ではなく!!

下の

Python 2.7 version

を選ぶ。そうしないと、OpenCVのバージョンにあわない。
今回64ビット版をダウンロード
(32ビットの人は、下のほうをダウンロード)


「管理者として実行」を選択して、管理者権限で実行します
(普通にダブルクリックすると、エラーになる)

実行して、インストールが終わったら、ためしに立ち上げるわけですが、

スタートボタン→Anaconda3(64bit)→Anaconda Prompt

を実行してコマンドラインを出して、
コマンドラインが出てきたら(私の環境だと、かなり時間かかった)

python

を実行(ふつうにコマンドラインからpythonとうつと、パスが無いので
エラーになる)

ためしに

import sys
sys.version_info


とかして、バージョンっぽいものが出てくればOK

--------------

■OpenCVでpythonのライブラリをとってくる

AnacondaにOpenCVをインストール
http://opencv.blog.jp/python/anaconda_opencv_install

に書いてあるとおりにやろうとして

http://opencv.org/

にいっても、そもそも、ダウンロード画面がない。
OpenCV3.2がLatestNewsに載っていたので、そこ

http://opencv.org/opencv-3-2.html

にいったら、「Download」に

  Windows self-extracting archive: sourceforge

とあって、sourceforgeクリックしたら、勝手にダウンロード始めた(^^;)

それを実行

そうすると、opencvとか言うフォルダに解凍したものがでてくる。64ビットなので

opencv\build\python\2.7\x64

の、cv2.pydを

C:\ProgramData\Anaconda2\Lib\site-package

の下に入れて、もう一度

スタートボタン→Anaconda3(64bit)→Anaconda Prompt

を実行してコマンドラインを出して、
コマンドラインが出てきたら(私の環境だと、かなり時間かかった)

python

を実行。ためしに

import cv2

すると、エラーにならずに(なにも出ないで)プロンプト

--------------

■プログラミング

Getting Started with Images
https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_gui/py_image_display/py_image_display.html#using-opencv

にプログラムがある。ちなみに、ピクチャライブラリのサンプル画像

C:\Users\Public\Pictures\Sample Pictures

にあるペンギン.jpg(と見えるけど、本当のファイル名はPenguins.jpg)
を出す場合は、こんな感じ

import cv2
img = cv2.imread('C:\Users\Public\Pictures\Sample Pictures\Penguins.jpg',0)
cv2.imshow('image',img)
cv2.waitKey(0)


imshowでなんかへんなものがでて
waitKeyすると、白黒のペンギンが出る。
上のXボタンでクローズしました。

その例にあるように、imreadの第二引数に0を指定すると、白黒画像になる
元はカラー画像なんだけど、カラーのまま表示するには

img = cv2.imread('C:\Users\Public\Pictures\Sample Pictures\Penguins.jpg')

にする。

--------------

ここまで、やってきて、気づいた・・・
始めのエラーは、たぶん、ファイル名を
C:\Users\Public\Pictures\Sample Pictures\ペンギン.jpg
って、したからだ・・・あのエラー、ファイルがなくても、
そうでるんだ・・・たぶん・・・