前提・実現したいこと
C++、OpenCVを使って、PCにカメラを2台接続し、それぞれから取得した映像をパノラマ合成したいと思っています。
下記サイトなどを参考にコードを作成しました。
https://qiita.com/itoshogo3/items/7a3279668b24008a3761
https://qiita.com/vs4sh/items/4a9ce178f1b2fd26ea30
ビルドは通りましたが、カメラアクセス許可の部分で問題が発生しているようで、実行できません。
Info.plistを作成し、NSCameraUsageDescriptionについては明示しているのですが、
エラーがなくなりません。
解決方法や試した方がいいことがあれば、ご教示いただきたいです。
発生している問題・エラーメッセージ
以下、コンソールに表示されているログです。
OpenCV: not authorized to capture video (status 0), requesting... [access] This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSCameraUsageDescription key with a string value explaining to the user how the app uses this data.
該当のソースコード
C++
1#include <iostream> 2#include "opencv2/opencv.hpp" 3#include "opencv2/stitching.hpp" 4 5int main(int argc, const char * argv[]) { 6 7 using namespace cv; 8 9 cv::VideoCapture cap1(0); 10 cv::VideoCapture cap2(1); 11 12 //キャプチャサイズの指定 13 Size cap_size(320,240); 14 15 if(!cap1.isOpened())//カメラデバイスが正常にオープンしたか確認. 16 { 17 //読み込みに失敗したときの処理 18 return -1; 19 } 20 if(!cap2.isOpened())//カメラデバイスが正常にオープンしたか確認. 21 { 22 //読み込みに失敗したときの処理 23 return -1; 24 } 25 26 cv::Mat frame1; 27 cv::Mat frame2; 28 29 std::vector<Mat> imgArray; 30 31 //取得したフレームの処理 32 while(cap1.read(frame1) && cap2.read(frame2)){ 33 imgArray.push_back(frame1); 34 imgArray.push_back(frame2); 35 36 Mat pano; 37 Stitcher::Mode mode = Stitcher::PANORAMA; 38 Ptr<cv::Stitcher> stitcher = Stitcher::create(mode); 39 std::cout << "yeeeeeeeeeeee\n"; 40 stitcher->stitch(imgArray, pano); 41 42 cv::imshow("win", pano);//画像を表示. 43 } 44 45 return EXIT_SUCCESS; 46} 47
試したこと
Info.plistを作成し、NSCameraUsageDescriptionについて明示。
上記plistが当該プログラムにアタッチされていることを確認済み。
XcodeやMacの再起動も行なってみましたが、解決せずです。
補足情報(FW/ツールのバージョンなど)
macOS 10.14.6
Xcode 11.3.1
OpenCV 4.4.0
あなたの回答
tips
プレビュー