OpenCV垫损坏
Posted
技术标签:
【中文标题】OpenCV垫损坏【英文标题】:OpenCV Mat corruption 【发布时间】:2016-08-05 01:56:38 【问题描述】:我一直在开发一个简单的基于 IP 的视频程序,部分用于项目,部分用于自学一些使用高级接口的网络基础知识。问题是我可以通过网络从cv::Mat
发送数据就好了,但是一旦我尝试解码数据,它似乎丢失了很多颜色数据。代码在这个gist 中,其中包含在Linux 下构建和运行项目所需的所有文件。任何人都可以对此有所了解吗?
如果您需要更多信息,请告诉我。恐怕你需要一个网络摄像头来测试。
【问题讨论】:
【参考方案1】:当您使用 memcpy(m.data(), frame.data, frame.rows * frame.cols);
复制数据时,您只复制了总数据的三分之一,因为您的图像是 3 通道图像。
尝试将其更改为memcpy(m.data(), frame.data, 3 * frame.rows * frame.cols);
(并在之前分配足够的空间)。
【讨论】:
谢谢!这解决了问题,果然颜色数据只是部分复制到客户端。我确实让它只适用于您的更改,并且显示了颜色,但偏斜。从客户端的Mat
构造函数中删除vmetadata.cvstep
然后显示正确的图像。以上是关于OpenCV垫损坏的主要内容,如果未能解决你的问题,请参考以下文章