我正在尝试使用openCV读取视频帧,以cv::Mat的形式保存数据。然后我想使用另一段代码将这个视频帧传递给接受"int类型矩阵"的函数。我知道"cvMat"和"int类型矩阵"不兼容。也许我对opencv不太熟悉,但我是否可以进行任何形式的"cvMat"和"int mat"之间的转换,以便我可以将捕获的视频帧用于我的代码? 我所说的"int mat"可能不正确,但我的意思是:
cv::Mat videoFrame;
int inputData[600][400];
我希望能做类似以下的事情:
我想要做的是:
inputData = videoFrame;
谢谢你。
cv::Mat
的底层数据时,请注意 OpenCV 可能引入的任何填充,特别是在将其传递给其他期望连续数据的函数时。OpenCV 可以(默认会)在行之间引入额外的填充,以将它们对齐到 4(或8)字节边界上。虽然对于一个32位整数(和/或这样的圆行宽度),可能不会有任何填充,但这是一般情况下需要记住的事情。 - Christian Raucv::Mat
的尺寸时,高度应该在宽度之前。因此,在@sammy的答案(以及原始问题)中,我们实际上处理的是一张400x600的图像,而不是600x400的图像。 - Efreeto