勉強しないとな~blog

ちゃんと勉強せねば…な電気設計エンジニアです。

OpenCVやってみる - 46. カメラ変更

久し振りの更新です。

今年も春のパン祭りが始まり、シールも早速集まってきた(もらった)ので、去年のシール点数自動集計を改めて触ってみました。

いくつか本体の処理以外でやったことがあるので、記事にしておきます。

今回は、Jupyter notebookのエクスポートではなく、普通にはてなブログ上で書いた記事です。

内容

  • カメラの変更
    去年はPC内蔵のカメラを使っていましたが、モニタ側に向いているインカメしかないので、シール台紙を映しながら結果を確認するのがやりづらく。
    iPhoneWebカメラ化する方法があるようだったので、これを試しました。
  • exe化
    Pythonスクリプトとしてしか作っていなかったので、読んでいる人には使ってもらいにくかったかなと。
    Pythonスクリプトのexe化もできるようで、こちらも試しました。
    ついでに、GtHubでの公開も~

カメラの変更

私はiPhoneを使っています。
いくつか調べて、DroidCamというアプリを使う方法をやってみました。

qiita.com

EpocCamというアプリもやってみましたが、OpenCVからの接続がうまくいかなかったので没で。

iPhone SEを高画質WEBカメラにしてzoomと接続する方法|sugarcamera

手順。

  1. iPhoneにDroidCamをインストール

  2. iPhone(家のWiFiに接続した状態)でDroidCamを立ち上げ
    アプリの画面で、IPアドレスとポート番号を確認

    画面下のほう、広告がでかでかと出ていますが…

  3. ブラウザから確認: ブラウザのアドレスバーに"http://(IPアドレス):(ポート番号)/video" ・・・今回は"http://192.168.1.7:4747/video"

    ちゃんとiPhoneカメラの画像が見えました。
    ちなみに、iPhoneを横向きにして映しています。これは設定次第かな?

  4. OpenCV-Pythonから確認: 下記コードを実施。

import cv2
cap = cv2.VideoCapture()
cap.open('http://192.168.1.7:4747/video')
True
while True:
    ret, frame = cap.read()
    if not ret:
        print('Can\'t receive frame')
        cv2.destroyAllWindows()
        break
    else:
        cv2.imshow('Image', frame)
        k = cv2.waitKey(1)
        if k == ord('e'):
            cv2.destroyAllWindows()
            break
            
print(frame.shape)
(480, 640, 3)
cap.release()
cap.isOpened()
False

画像はVGAサイズになっているようです。

確認した画像は下の通り。
ちゃんと見られました。

一旦ここまで

ここで一区切りにします。
次回は、Pythonスクリプトのexe化をしたいところですが、その前にPythonでのGUIもやる必要がありそうなので、そちらをやります。