objective-c - CoreML 使用 AVCaptureSession 返回不同的值

标签 objective-c swift avcapturesession coreml

我正在尝试使用 AVCaptureSession 运行 CoreML 模型。

当我将相同的图像作为 CoreML 模型的输入时,它每次都会给出相同的结果。 但是当使用函数给出的图像时:

- (void) captureOutput:(AVCaptureOutput*)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection*)connection {
    __block CIImage* ciimage = [CIImage imageWithCVPixelBuffer:CMSampleBufferGetImageBuffer(sampleBuffer)];

    dispatch_sync(dispatch_get_main_queue(), ^{
        VNImageRequestHandler* handler = [[VNImageRequestHandler alloc] initWithCIImage:ciimage options:@{}];
        [handler performRequests:@[self.coreRequest] error:nil];
    });
}

即使我不移动手机并且背景也始终相同,它也不会给我完全相同的结果。。 (需要明确的是,我的手机放在 table 上,摄像头看着我房间的地板,没有任何东西在移动)。

我尝试逐像素比较两个图像(前一个图像和新图像),发现有不同。

我想了解为什么这些图像不同?

谢谢

最佳答案

很可能是相机噪音。从相机获得的图片永远不会完全稳定。即使相机指向同一物体,噪声也会造成像素值的微小差异。这些微小的差异可能会对预测产生很大的影响。

关于objective-c - CoreML 使用 AVCaptureSession 返回不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59801636/

相关文章:

ios - 如何制作具有动态类型支持的应用程序?

objective-c - 未接收到远程控制事件

ios - UIView animateWithDuration 在 ios8 中没有动画

ios - 更改属性类别

Objective-C,如何显示确定的进度条?

ios - URLSession实例方法 `downloadTask`错误

ios - 如何使用 swift 3 为核心数据生成虚拟数据

ios - 如何将带有图像数据的 CMSampleBuffer 转换为适合通过网络连接发送的格式?

ios - layerRectConverted(来自MetadataOutputRect :) issue

iphone - AVCapture追加SampleBuffer