我试图打开我的内置摄像头以制作一个人脸检测程序,但我注意到VideoCapture.open(0)在我试图通过cmake编译运行时不工作,但在我通过g++编译和运行时却工作了。
这个程序是一个项目的一部分,通过CMake编译是必要的,但似乎没有任何工作......。
(我使用的是Ubuntu)
我的代码编译并运行后,打开了内置的摄像机(返回 "true")。if(capture.isOpened())
),当我使用
g++ main.cpp FaceDetection.cpp `pkg-config --cflags --libs opencv4`
但在以下情况下返回false if(capture.isOpened())
当我通过 cmake 编译时,却没有打开内置的摄像头。
有什么办法可以让我在用g++编译的时候也能像这样运行?
编辑: 删除了我的代码,因为这根本不是代码的问题。我将回答我自己的问题,因为我找到了一个解决方案。
跑 make VERBOSE=1
, cmake ../ --log-level=VERBOSE
和
g++ main.cpp FaceDetection.cpp `pkg-config --cflags --libs opencv4`
按照Tsyvarev的建议,发现g++从usrinclude中包含opencv,而cmake从usrlocal中包含opencv。
我发现这个 解决方法:Ran cd /opt/opencv/build && make uninstall
先而后之 make
在我的项目文件夹中,这实际上解决了问题,打开了相机。
我不知道是什么原因造成的,但如果有人遇到这种情况,希望对大家有所帮助!