我们正在尝试将 opencv 应用程序移植到在 Yocto Linux 上运行的单板计算机上,在此过程中我们遇到了很多问题。与驱动程序相关的问题,通过更改内核的配置文件等来解决。我们能够解决所有这些问题,最后,我们在快照代码的下面突出显示行中遇到了“选择超时”错误。
#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/videoio.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/core.hpp>
#include <opencv2/core/core.hpp>
using namespace std;
int main(int, char**) {
cv::VideoCapture camera(0);
if (!camera.isOpened()) {
return 1;
}
cv::Mat frame;
while (camera.isOpened()) {
***camera >> frame;***
}
return 0;
}
此代码在我的本地机器上工作,但在 SBC 上不工作。有什么线索可以解决这个问题吗?如果需要,我很乐意分享更多细节。
PS Camera 被很好地检测到,因此不会在!camera.isOpened()
代码中抛出任何错误。它在行给出错误“选择超时”错误camera >> frame
。