独学でプログラミングとかやってみる 〜ITとかの勉強レポート〜

ボクが勉強したプログラミングやIT関連の情報を記事にしていきます。機械学習や深層学習なども取り扱います。

PyQ始めました

PyQってなに?

eラーニングサイトが最近増えてきていますが、 Pythonに特化したサイトがPyQになります。 今日5時間ほどやってみた感想としては、かなりいい感じです。 よく使いそうなコード詰まった一つのコースで400問以上用意されていました。 圧倒的なボリュームです。

Webから機械学習、統計処理など多岐に渡った学習ができるのでオススメです。 せっかくなので最初のコースから全ての問題を解こうとチャレンジしていますが、 かなり楽しいです。

Oculus Goのコントローラからレーザーポインターを出す方法

UnityでOculusGoのコントローラからレーザーポインターを出したい!

わかりやすく記事にまとめてあるサイト

qiita.com

基本的には記事の通りスクリプトを組んでいけばレーザーポインターを出すことができました。 次回以降はレーザーポインターの当たり判定まわりで遊んでいきたいと思います。

Unity2018でサンプルシーンを実機で動かした

Unityのバージョン

Unity2018.1.1f1

OS

Mac

どうやるか

Oculusユーザー登録をします。
そして、Oculus Goを開発者モードにスマホから設定します。

MacAndroid SDKをインストールします。
次にJDKをインストールし終わったらほとんど終わりです。

過去バージョンのUnityですと設定が面倒だったり、 ビルドエラーが出てイライラしました。
最新版ならエラーが出ないので、pacage nameをデフォルトから変更してビルド完了です。

詳しく書いてあるサイトがいくつかあります。
私が参考にしたサイト↓

参照サイト

qiita.com

無事にビルドできました!

実機のシェアから撮ったスクショがこちら f:id:realJ:20180521213327j:plain

Oculus GoのゲームをUnityで作る★その1

Oculus GoのゲームをUnityで組んでみる

コントローラ取得

Unityでゲームを作るのに必ず必要なことがあります。 それはコントローラからの入力をスクリプトで取得することです。 まず、コントローラ入力を取得する方法を調べたのでメモとして書いておきます。

元の記事 https://qiita.com/ry-kgy/items/2b783b969c874ef4cc64

バックボタン

バックボタン入力取得

OVRInput.Get(OVRInput.Button.Back)

トリガー

トリガーを押した入力の取得

OVRInput.GetDown(OVRInput.Button.PrimaryIndexTrigger)

トリガーを離した入力の取得

OVRInput.GetUp(OVRInput.Button.PrimaryIndexTrigger)

タッチパッド

クリックの入力取得

OVRInput.Get(OVRInput.Button.PrimaryTouchpad)

Up方向の入力取得

OVRInput.Get(OVRInput.Button.Up)

Down方向の入力取得

OVRInput.Get(OVRInput.Button.Down)

Left方向の入力取得

OVRInput.Get(OVRInput.Button.Left)

Right方向の入力取得

OVRInput.Get(OVRInput.Button.Right)

位置

位置の取得

Vector2 vector = OVRInput.Get(OVRInput.Axis2D.PrimaryTouchpad)

次回簡単な実装に挑戦

入力系統は以上ですので、あとはUnityでシンプルなゲームを作っていきたいと思います。 アンドロイドでビルドすれば動作するようなので、 次回以降は実際にゲームを組み、Oculus Go実機での動作確認を進めていきます。

OpenCVの基本操作の一部

OpenCVPythonで操作する基本的な話をメモ的に記載します。

ヒストグラム

import cv2
import matplotlib.pyplot as plt

img = cv2.imread("画像データのPath")

#カラー画像の場合
color_list = ["blue", "green", "red"]
for i,j in enumerate(color_list):
    hist = cv2.calcHist([img], [i], None, [256], [0, 256])
    plt.plot(hist, color = j)

#グレースケール画像の場合
img_gray = cv2.imread("画像データのPath", 0)
hist2 = cv2.calcHist([img_gray], [0], None, [256], [0,256])
plt.plot(hist2)

#ヒストグラムの均一化
img_eq = cv2.equalizeHist(img)
hist_e = cv2.calcHist([img_eq], [0], None, [256], [0, 256])
plt.plot(hist_e)

γ変換

画面を明るくしたり暗くしたりする処理

import numpy as np

#明るくするにはgamma > 1
gamma = 1.5
gamma_cvt = np.zeros((256, 1), dtype=np.uint8)
for i in range(256):
    gamma_cvt[i][0] = 255 * (float(i)/255) ** (1.0/gamma)
    
img_gamma = cv2.LUT(img, gamma_cvt)

#暗くするにはgamma < 1
gamma = 0.4
gamma_cvt = np.zeros((256, 1), dtype=np.uint8)
for i in range(256):
    gamma_cvt[i][0] = 255 * (float(i)/255) ** (1.0/gamma)
    
img_gamma = cv2.LUT(img, gamma_cvt)

以上、簡単な操作の一部でした。

MacでC++をコンパイルする

調べて忘れるのももったいないので、 メモとして記載します。

g++を使ってコンパイルを行います。 ターミナルに

$gcc --help

と入力して一覧が出てくれば準備は整っています。 例えば、「main.cpp」というファイルをコンパイルするには、

#a.outというファイルが出力される
$g++ main.cpp

#helloというファイルが出力される
$g++ -o hello main.cpp

出力されたファイルを実行するときは

#a.outを実行する場合
$./a.out

#helloを実行する場合
$./hello

以上のように入力すればOKです。

PythonでOpenCVを使ってみた

画像を開く、保存する

import cv2
img = cv2.imread("画像ファイルPath")
cv2.imwrite("保存ファイルPath", img)

動画を開く、保存する

import cv2
video = cv2.VideoCapture("動画ファイルPath")
if cap.isOpened() == False:
    sys.exit()
ret, frame = cap.read()
h, w = frame.shape[:2]
fourcc = cv2.VideoWriter_fourcc(*"XVID")
dst = cv2.VideoWriter("保存ファイルPath", fourcc, 30.0, (w,h))

リサイズ

import cv2
img = cv2.imread("画像ファイルPath")
size = (300, 200) #変更後のサイズを指定する
img_resize = cv2.resize(img, size)

以上の簡単な操作を行いました。