【发布时间】:2016-12-29 06:02:09
【问题描述】:
如何将 cv::Mat 数据复制回 sampleBuffer?
我的场景如下: 我从 pixelBuffer 创建一个 cv::Mat 用于地标检测,并将地标添加到 cv::Mat 图像数据。我想将此 cv::Mat 复制到示例缓冲区中,以便与地标一起显示。
这可能吗?
我使用 dlib 实现了这一点,但需要知道如何使用 cv::mat:
char *baseBuffer = (char *)CVPixelBufferGetBaseAddress(imageBuffer);
img.reset();
long position = 0;
while (img.move_next()) {
dlib::bgr_pixel& pixel = img.element();
long bufferLocation = position * 4; //(row * width + column) * 4;
char b = baseBuffer[bufferLocation];
char g = baseBuffer[bufferLocation + 1];
char r = baseBuffer[bufferLocation + 2];
dlib::bgr_pixel newpixel(b, g, r);
pixel = newpixel;
position++;
}
【问题讨论】:
-
可能是的。更多细节?一些代码?
-
我按照 answer 将
CVImageBufferRef转换为 cv::mat。现在我想把这个 cv::mat 放回样本缓冲区。我知道如何通过将像素复制回 sampleBuffer 来使用 dlib,但不知道如何使用 openCV 下一条评论中的 dlib 示例代码 -
请将格式正确的代码发布到问题中。它在评论中不可读
-
似乎代码突出显示在 cmets 中不起作用我将编辑主要问题
标签: ios opencv avfoundation