VideoCapture(0) 和 VideoCapture.open(0) 似乎不适用于 CMake (UBUNTU) (OpenCV4)

VideoCapture(0) and VideoCapture.open(0) Do Not Seem To Work With CMake (UBUNTU) (OpenCV4)

我试图打开我的内置摄像头以制作人脸检测程序,但我注意到当我尝试 运行 时 VideoCapture.open(0) 不起作用cmake 编译,但是当我通过 g++ 编译和 运行 时确实有效。

这个程序是一个项目的一部分,需要通过CMake编译,但是似乎没有任何效果...

(我正在使用 Ubuntu)

我的代码编译和 运行s,打开内置相机(在 if(capture.isOpened()) 上返回 "true"),当我使用

g++ main.cpp FaceDetection.cpp `pkg-config --cflags --libs opencv4`

但 returns 在 if(capture.isOpened()) 上为 false 并且当我通过 cmake 编译时不打开内置摄像头。

当我用 g++ 编译它时,有什么想法可以让 运行 喜欢它 运行s 吗?

编辑:删除了我的代码,因为这根本不是代码的问题。当我找到解决方案时会回答我自己的问题。

运行 make VERBOSE=1cmake ../ --log-level=VERBOSE

g++ main.cpp FaceDetection.cpp `pkg-config --cflags --libs opencv4`

正如 Tsyvarev 所建议的,发现 g++ 包含来自 /usr/include 的 opencv 而 cmake 包含来自 /usr/local

的 opencv

我找到了这个解决方案: 先运行 cd /opt/opencv/build && make uninstall再运行 make在我的项目文件夹里,居然解决了问题,打开了相机。

我不确定是什么原因造成的,但如果有人遇到这种情况,希望对您有所帮助!