作业帮 > 综合 > 作业

opencv 中 Mat 数据结构的用法

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/28 11:12:01
opencv 中 Mat 数据结构的用法
假设Mat A的维度是 (i,j,k) ,现在想将它的 (i,j,0) (i,j,k-1) 分别提取出来赋给A0~Ak,如何实现.
{
Range size(Range::all(),Range::all(),Range(0,1));
A0(Range::all(),Range::all())=A(size);
}
我试过了不行.T_T
用一个三重循环倒是可以,可是程序运行太慢了,想提一下速.
opencv里面好多matlab的函数我都不知道是哪个,或者我该怎么查帮助文档呢?
A0 = A.reshape(A.channels(),i*j).col(0).reshape(A.channels(),i);
A1 = A.reshape(A.channels(),i*j).col(1).reshape(A.channels(),i);
……
Ak = A.reshape(A.channels(),i*j).col(k).reshape(A.channels(),i);
再问: 试了一下,好像3维的mat不能reshape吧(不是三通道)。。 目前我只会A.at(x,y,z)来访问单个元素,Mat对3维的支持是不是不太好啊…
再答: 刚查了下代码!确实不支持3维的reshape。抱歉!可以试着转成2维的再处理。 A0 = Mat(i * j, k, A.type(), A.data).col(0).clone().reshape(A.channels(), i); A1 = Mat(i * j, k, A.type(), A.data).col(1).clone().reshape(A.channels(), i); …… Ak = Mat(i * j, k, A.type(), A.data).col(k).clone().reshape(A.channels(), i); A0 ~ Ak 中保存的是A的副本。对A0 ~ Ak的操作不会体现在A中