OpenCV 垫损坏

OpenCV Mat corruption

我一直在开发一个简单的 video-over-ip 程序,一部分用于项目,一部分用于自学一些使用高级接口的网络基础知识。问题是我可以很好地通过网络从 cv::Mat 发送数据,但是一旦我尝试解码数据,它似乎丢失了很多颜色数据。代码在这个gist里面,里面包含了构建运行项目所需要的所有文件Linux。谁能对此有所启发?

如果您需要更多信息,请告诉我。恐怕你需要一个网络摄像头来测试。

当您使用 memcpy(m.data(), frame.data, frame.rows * frame.cols); 复制数据时,您只复制了总数据的三分之一,因为您的图像是三通道图像。

尝试改成memcpy(m.data(), frame.data, 3 * frame.rows * frame.cols);(之前分配足够的space)。