1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

VS CodeでOpenCVする時に、MacBook内蔵Facetimeカメラが使えない(セキュリティーとプライバシー)

Last updated at Posted at 2021-02-20

とりあえず、最短距離でOpenCVを試してみたい

Mac/iMacで、OpenCVやってみたい、さぁ、とりあえずサンプルを、と思ったとき、以下のような最短手順で、内蔵Facetimeカメラを使った顔認識を試すことができます。

ダウンロード/インストール

pip3 install -U opencv-contrib-python
curl -OL https://github.com/opencv/opencv/archive/4.5.1.zip
unzip 4.5.1.zip

実行

cd opencv-4.5.1/samples/python

python3 facedetect.py
カメラへのアクセスが必要と言われたら、[OK]を押して、もう一度実行。
自分の顔で試したり、そのへんに転がっていた集合写真などをかざせば、オッケー。
(escキーで終了)

(蛇足)ダウンロードは、curlでもwgetでもお好きな方で。

wgetが好きな人は、curlの代わりに、
wget https://github.com/opencv/opencv/archive/4.5.1.zip
brewでwgetをインストールする場合は、
brew install wget

VS Codeでやってみると、あれ???

VS Code便利!、ターミナルもVS Codeで、となっている人も多いと思います。
で、やってみると、んんー、と考えた後、エラーが出ます。

Abort trap: 6

なにこのエラーメッセージ。そっけない。ググッてみたら、C++コード実行時例外発生、ということで、いろいろな局面で出る模様。

Facetime HD Camera関係でググると、カメラのアクセスがシステムによって許可されていないから、ということ。「システム環境設定/セキュリティーとプライバシー/カメラ」で、登録するやつですね。

ターミナルアプリは、許可されているのでオッケー。はい、ここにVS Codeも登録したら良いです。とはならない。。

例えば、ブラウザ経由で動いているJupyterがカメラ/マイクを使おうとするとき、Jupyterからリクエストがでて、ここに登録する流れができますが、VS Codeはそれがないことが問題。マイクへのアクセスも同様。

とりあえずの解決策

ターミナルから、code .とコマンドを打ってVS Codeを起動すればよい。カメラ/マイクへのアクセスは、起動した親のアクセス権が適応される、ということ。

codeコマンドを有効にするには、

  1. VS Codeのコマンドパレットから、shellと入力。
  2. 「シェル コマンド: PATH内に'code'コマンドをインストールします」をクリック。

根本的な解決

VS CodeのGitHub.comリポジトリで、issueが上がっています。

'VSCode terminal doesn't allow/request permissions to access media devices #95062'
https://github.com/microsoft/vscode/issues/95062

問題は認識されているが、未解決。
根本的な解決は、VS Codeが「セキュリティーとプライバシー」に登録される流れを実装すること。しばし待て、ですね。

危険なゴニョゴニョ

おとなしく、待つ方が賢明です。それでもやりたい人は、データベースを直接書き換えます。アップデートなどでデータベースの構造が変化していたりすると、バグります。

リカバリーモードでシステム再起動(cmd+R長押し)して、System Integrity Protection(SIP、システム整合性保護)を一時的に無効化しないとダメ、というサイトが多数見られますが、不要です。

代わりに、ターミナルにフルディスクアクセスの権限を与えます。

スクリーンショット 2021-02-20 13.19.02.png

Mojaveは、これで行けました。

# TCC.dbを念の為バックアップして、データベースを編集
cd ~/Library/Application\ Support/com.apple.TCC/
cp TCC.db TCC.db.bak
sqlite3 TCC.db  # sqlite>プロンプトが出ます。

# Mojaveの場合:
#  VS Codeにカメラへのアクセス権を追加
INSERT into access VALUES('kTCCServiceCamera',"com.microsoft.VSCode",0,1,1,NULL,NULL,NULL,'UNUSED',NULL,0,1541440109);

#  マイクへのアクセス権を追加
INSERT into access VALUES('kTCCServiceMicrophone','com.microsoft.VSCode',0,1,1,NULL,NULL,NULL,'UNUSED',NULL,0,1541440109);

スクリーンショット 2021-02-20 13.15.45.png

BigSurの場合(すみません、未検証です。どなたか、冒険心と興味あれば追試を。危険です。)

# BigSurの場合:

GitHub.comのissueでBigSurを検証してくれた人がいました。カラムが12から13に増えたようで、1を一つ増やしてオッケーだったようです。

INSERT into access VALUES('kTCCServiceCamera',"com.microsoft.VSCode",0,1,1,1,NULL,NULL,NULL,'UNUSED',NULL,0,1541440109);

INSERT into access VALUES('kTCCServiceMicrophone','com.microsoft.VSCode',0,1,1,1,NULL,NULL,NULL,'UNUSED',NULL,0,1541440109);

おまけ。OpenCVのサンプル実行

色々試すには、メニューアプリdemo.pyを使う。

cd opencv-4.5.1/samples/python
python3 samples/python/demo.py

読みにくかったので、フォントやフォントサイズを改変しました。各エントリーが、かなりいい加減に作られていて、ボロが出ます。もうちょっとメンテしても良さそうな。。

ビデオソースを使うデモとしてわかりやすいのは、こんなところで。

facedetect.py
mosse.py
edge.py

基本的にescキーで終了、となっているものが多いかな?

レナさんファンは、チュートリアルにある、こちらなど、どうぞ。

cd opencv-4.5.1/samples/python
python3 tutorial_code/ImgTrans/Filter2D/filter2D.py
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?