使用 OpenCV (C++) 在 Xcode 中访问网络摄像头
Accessing webcam in Xcode with OpenCV (C++)
我正在尝试打开网络摄像头并使用 OpenCV 显示简短的捕获。我目前正在 Xcode,使用 C++ 语言。
代码非常简单:
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main(int argc, const char * argv[]) {
// variable initialization
Mat frame;
VideoCapture cap; // 0 is the webcam
// try to open camera
cap.open(0);
if (!cap.isOpened()) return -1; // check if there is no video or no way to display it
// create a window and display the video capture
namedWindow("Video Capture", CV_WINDOW_AUTOSIZE);
for (int i=0; i<100; i++) {
cap >> frame;
imshow("Video Capture", frame);
waitKey(1);
}
return 0;
}
当我运行代码返回以下错误:
[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.
因此,我在项目中添加了一个 Info.plist 文件(目前在 main.cpp 所在的同一目录中)并添加了编译器建议的描述:
Key: Privacy - Camera Usage Description
Value: $(PRODUCT_NAME) camera use
然后,在项目的Build Settings中,我使用完整路径引用了我刚刚编写的文件,如下图所示:
我确定路径是正确的,因为我拖放了文件本身,但编译器一直显示相同的错误并退出执行。
最后我找到了解决办法;这些是我遵循的步骤:
- 在 Project Navigator(在 Xcode IDE 的左侧)右击项目 -> New File -> 属性 file
- 调用文件 "Info.plist" 并将其保存在 main.cpp 所在的同一个目录中(它应该也可以在上层目录中工作,但这对我有用)作为如下图所示:
- Select Info.plist 文件并根据上面问题中的解释进行编辑。
- 现在我们需要 link 将 Info.plist 添加到项目中,因此在项目导航器中左键单击项目,select 选项卡常规,然后在左窗格中 ("project and target list"),单击 "TARGET" 部分下的可执行文件。您应该能够看到一个显示 "Choose Info.plist File" 的按钮,请参见下图:
因为我注意到程序还没有直接从 Xcode IDE 启动,但是我能够(在 Finder 中)导航到可执行文件所在的目录并且 运行 通过使用终端程序,我将 Info.plist 复制粘贴到该文件夹中,按照建议
我正在尝试打开网络摄像头并使用 OpenCV 显示简短的捕获。我目前正在 Xcode,使用 C++ 语言。
代码非常简单:
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main(int argc, const char * argv[]) {
// variable initialization
Mat frame;
VideoCapture cap; // 0 is the webcam
// try to open camera
cap.open(0);
if (!cap.isOpened()) return -1; // check if there is no video or no way to display it
// create a window and display the video capture
namedWindow("Video Capture", CV_WINDOW_AUTOSIZE);
for (int i=0; i<100; i++) {
cap >> frame;
imshow("Video Capture", frame);
waitKey(1);
}
return 0;
}
当我运行代码返回以下错误:
[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.
因此,我在项目中添加了一个 Info.plist 文件(目前在 main.cpp 所在的同一目录中)并添加了编译器建议的描述:
Key: Privacy - Camera Usage Description
Value: $(PRODUCT_NAME) camera use
然后,在项目的Build Settings中,我使用完整路径引用了我刚刚编写的文件,如下图所示:
我确定路径是正确的,因为我拖放了文件本身,但编译器一直显示相同的错误并退出执行。
最后我找到了解决办法;这些是我遵循的步骤:
- 在 Project Navigator(在 Xcode IDE 的左侧)右击项目 -> New File -> 属性 file
- 调用文件 "Info.plist" 并将其保存在 main.cpp 所在的同一个目录中(它应该也可以在上层目录中工作,但这对我有用)作为如下图所示:
- Select Info.plist 文件并根据上面问题中的解释进行编辑。
- 现在我们需要 link 将 Info.plist 添加到项目中,因此在项目导航器中左键单击项目,select 选项卡常规,然后在左窗格中 ("project and target list"),单击 "TARGET" 部分下的可执行文件。您应该能够看到一个显示 "Choose Info.plist File" 的按钮,请参见下图:
因为我注意到程序还没有直接从 Xcode IDE 启动,但是我能够(在 Finder 中)导航到可执行文件所在的目录并且 运行 通过使用终端程序,我将 Info.plist 复制粘贴到该文件夹中,按照建议