Raspberry Pi3 に OpenCV3をインストール(Raspbian Jessie環境上)&キャリブレーション
前回UbuntuにOpenCV入れて遊んだので今度はRaspberryPiに入れてみます。
前回の記事↓
ossyaritoori.hatenablog.com
正直同じような手順な上,完全に以下のサイトの通りやったので特に言うことはありません。
Install guide: Raspberry Pi 3 + Raspbian Jessie + OpenCV 3 - PyImageSearch
以下個人用のメモを残すのみとさせていただきます。
cmake後
手持ちの環境ではPython3にnumpyとOpenCV3が紐付けられた。
OpenCV make 時
非常に熱くなるので適宜冷やしながら行った。途中でフリーズした。
それ以後
現在検証中~~
キャリブレーション
python2系で書いてますけど実際は3の環境でやるので
printまわりは直しておかないと行けないですね。
rmsエラーが自分は0.3程度になりましたがいくつくらいになるといいのかの感覚などはいまだ無いです。
# -*- coding: utf-8 -*- # largely from here # http://russeng.hatenablog.jp/entry/2015/06/16/004704 import numpy import cv2 # get file name efficiently from glob import glob def main(): square_size = 1.0 # 正方形のサイズ pattern_size = (10, 7) # 模様のサイズ pattern_points = numpy.zeros( (numpy.prod(pattern_size), 3), numpy.float32 ) #チェスボード(X,Y,Z)座標の指定 (Z=0) pattern_points[:,:2] = numpy.indices(pattern_size).T.reshape(-1, 2) pattern_points *= square_size obj_points = [] img_points = [] for fn in glob("images/*.jpg"): # 画像の取得 im = cv2.imread(fn, 0) print "loading..." + fn # チェスボードのコーナーを検出 found, corner = cv2.findChessboardCorners(im, pattern_size) # コーナーがあれば if found: term = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_COUNT, 30, 0.1) cv2.cornerSubPix(im, corner, (5,5), (-1,-1), term) # コーナーがない場合のエラー処理 if not found: print 'chessboard not found' continue img_points.append(corner.reshape(-1, 2)) #appendメソッド:リストの最後に因数のオブジェクトを追加 obj_points.append(pattern_points) #corner.reshape(-1, 2) : 検出したコーナーの画像内座標値(x, y) # 内部パラメータを計算 rms,CameraMatrix,Distorition,rotate vec,translate vec rms, K, d, r, t = cv2.calibrateCamera(obj_points,img_points,(im.shape[1],im.shape[0]),None,None) # 計算結果を表示 print "RMS = ", rms print "K = \n", K print "d = ", d.ravel() # 計算結果を保存 numpy.savetxt("rms.csv", numpy.array([rms]), delimiter =',',fmt="%0.14f") numpy.savetxt("K.csv", K, delimiter =',',fmt="%0.14f") numpy.savetxt("Dist.csv", d, delimiter =',',fmt="%0.14f") if __name__ == '__main__': main()