本稿は、「Windows10上でVSCodeを使ってPython+OpenCVのプログラムを開発する」ための環境をつくる方法を記したものです。2021年2月時点での最新版を使い、Visual Studio Code1.53.1 の上で、Python 3.8.5、OpenCV 4.5.1が使えることを確認できています。以下はその手順です。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
◆Anacondaのインストール
Anacondaのサイトからダウンロードした Anaconda3-2020.11-Windows-x86_64.exe を実行し、D:\Development\anaconda3(任意)にインストールする。
◆VSCodeのインストール
Visual Studio Codeのサイトからダウンロードした VSCodeUserSetup-x64-1.53.1.exe を実行し、D:\Development\Microsoft VS Code(任意)にインストールする。
◆VSCodeの拡張機能のインストール
VSCodeのアクティビティー・バーで拡張機能を開き、
- Japanese Language Pack for Visual Studio Code
をインストールする。
◆activate/deactivateコマンドのPowerShellスクリプトのセット
下記の手順でGitを使ってactivate、deactivateスクリプトを入手し、anacondaで使えるようにする。
PS D:\Development> git clone https://github.com/Liquidmantis/PSCondaEnvs PS D:\Development> cd PSCondaEnvs PS D:\Development\PSCondaEnvs> cp activate.ps1 d:\Development\anaconda3\Scripts\. PS D:\Development\PSCondaEnvs> cp deactivate.ps1 d:\Development\anaconda3\Scripts\.
◆環境の作成
python 3.8.5、OpenCV 4を使う環境をopencv4という名で新たに作成し、それをactivateする。
PS D:\Development\PSCondaEnvs> conda create -n opencv4 python=3.8.5 PS D:\Development\PSCondaEnvs> conda env list # conda environments: # base * D:\Development\anaconda3 opencv4 D:\Development\anaconda3\envs\opencv4 PS D:\Development\PSCondaEnvs> activate opencv4
opencv4 という環境をactivateしたので、そこにOpenCVをインストールする。
opencv4の環境では、OpenCVのバージョン4.5.1がインストールされ、インポートできるようになっていることが確認できた。
[opencv4] PS D:\Development\PSCondaEnvs> pip install opencv-contrib-python [opencv4] PS D:\Development\PSCondaEnvs> python Python 3.8.5 (default, Sep 3 2020, 21:29:08) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import cv2 >>> cv2.__version__ '4.5.1'
◆Python3.8.5とOpenCV4の環境でのプログラムの実行
VSCodeの左下でPython 3.8.5 64-bit (’opencv4’):conda)が設定されていることを確認する。異なっていいれば、左下のPythonの表示をクリックして設定する。
下にサンプルプログラム(ハノイの塔で一番上の円盤を軸から引き上げる動作のグラフィカル表示)と実行結果を示す。
OpenCVはimport cv2 としてインポートする。OpenCV 4.5.1であるがモジュール名はcv2である。
import numpy as np import cv2 import time def DiscColor(i): #Discの番号を渡されて色を返す関数 if i % 2 == 0: color = (0,42,84) # こげ茶 else: color = (55,174,255) # 黄土 return(color) ww = 640 wh = 480 ps = int(ww / 4) bh = int(3 * wh / 4) maxdn = 5 #number of discs dh = int(wh / 4 / maxdn) dr = [0,0,0,0,0,0,0] for i in range(maxdn): dr[i] = int(ww/8 * (1 - 3*i/(maxdn-1)/4)) for j in range(5): img = np.full((wh, ww, 3), 255, dtype=np.uint8) # 白いベースの画面 cv2.line(img, (int(ww/16), bh), (int(ww*15/16), bh), (0,0,0), 3) # 水平線 for i in range(3): # 軸の描画 cv2.line(img, (int(ww*(i+1)/4), int(wh*6/16)), (int(ww*(i+1)/4), int(wh*3/4)), (0,0,0), 3) for i in range(maxdn-1): # 円盤の描画 cv2.rectangle(img, ((ps-dr[i]), (bh-dh*(i+1))), ((ps + dr[i]), (bh-dh*i)), DiscColor(i), -1) i = maxdn-1 # 一番上の円盤の描画 5回に分けで少しずつ上に移動させる cv2.rectangle(img, ((ps-dr[i]), (bh-dh*(i+j+1))), ((ps + dr[i]), (bh-dh*(i+j))), DiscColor(i), -1) # cv2.imshow('img', img) cv2.moveWindow('img', 0, 520) cv2.waitKey(200) # 200mmsecの間待つ cv2.waitKey(0) # 0の場合、キーが押されるまで待つ