C++ 当相机被其他应用程序使用时,帧数据包含垃圾值

C++ 当相机被其他应用程序使用时,帧数据包含垃圾值,c++,opencv,affdex-sdk,C++,Opencv,Affdex Sdk,所以我一直在使用OpenCV和Affdex SDK来捕捉图像和处理情绪。但是当相机被其他应用程序使用时 // Capture an image from the camera cv::Mat frame_image; if (!video_capture.read(frame_image)) {} read仍然返回true,但frame_image.data在调试版本中包含垃圾值,但在发布版本中为空。我在发布版本中使用此代码来检测数据是否为空:

所以我一直在使用OpenCV和Affdex SDK来捕捉图像和处理情绪。但是当相机被其他应用程序使用时

        // Capture an image from the camera
        cv::Mat frame_image;
        if (!video_capture.read(frame_image)) {}
read仍然返回true,但frame_image.data在调试版本中包含垃圾值,但在发布版本中为空。我在发布版本中使用此代码来检测数据是否为空:

bool CEmotionTracker::is_frame_data_empty(const uchar *frame_data) const
{
if (frame_data && frame_data[0] == '\0')
    return true;

return false;
}
但这在调试版本中不起作用,因为存在垃圾值,我认为检查数据是否包含垃圾值以确定它是否包含有效的帧数据不是一个好主意。有没有办法检查frame_image.data是否包含有效数据

编辑:


frame_image.empty()将返回false,因此它不是我要查找的

我不认为
frame_image.data
会以任何方式指示您垃圾值。因此,更好的方法是,在拍摄帧之前,检查相机是否已被其他应用程序使用。谢谢回复。是否有任何API来确定摄像头是否被其他应用程序使用?如果另一个应用程序正在使用摄像机,video_capture.isOpened()仍将返回true,这就是为什么我使用is_frame_data_empty来检查它是否包含空数据