openCV vs matlab矩阵连接
openCV vs matlab matrix concatination
这是我试图在openCV 2.4.11中重现的matlab代码
A = [1 1; 1 1];
B = [2 2; 2 2];
C = [3 3; 3 3];
D = cat(3, A, B,C)
D= imresize(D, [100 50], 'nearest');
这是我到目前为止所尝试的。但据我所知,这不是相同的三维矩阵,openCV只是将矩阵一个附加到另一个。
cv::Mat a(2,2,CV_64F);
cv::Mat b(2,2,CV_64F);
cv::Mat c(2,2,CV_64F);
for (int i = 0; i < 4; i++)
{
a.at<double>(i) = 1;
b.at<double>(i) = 2;
c.at<double>(i) = 3;
}
cv::Mat d;
std::vector<cv::Mat>tempVec;
tempVec.push_back(a);
tempVec.push_back(b);
tempVec.push_back(c);
cv::hconcat(tempVec,d);
我也试过
cv::Mat d = cv::Mat::zeros(2,2,CV_64FC3);
for (int w = 0; w < 2; w++)
{
for (int h = 0; h < 2; h++)
{
d.at<cv::Vec3d>(w,h)[0] = a.at<double>(w,h);
d.at<cv::Vec3d>(w,h)[1] = b.at<double>(w,h);
d.at<cv::Vec3d>(w,h)[2] = c.at<double>(w,h);
}
}
你能帮忙吗?请看到,我需要在matlab的下一行使用imresize,所以解决方案应该是cv::Mat
cv::Mat和cv::Vec3f能起作用吗?还是有更好的方法将3个矩阵连接成一个3D矩阵?
更新:我把cv::hconcat(tempVec,d);
改成了cv::merge(tempVec, d);
并将此打印添加到文件
ofstream myfile;
myfile.open("C:\Users\gdarmon\Desktop\OpenCV_TNR.txt");
myfile << d;
myfile.close();
这是我的输出[1, 2, 3, 1, 2, 3;
1, 2, 3, 1, 2, 3]
你很接近了。我会用cv::merge
。事实上,它的目的是将单通道矩阵(2D)合并成一个多通道矩阵(3D)。
因此,不要使用cv::hconcat
,只需:
cv::merge(tempVec, d);
相关文章:
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 当套接字连接断开时检测C/C++Unix
- 有可能在Armadillo中复制MATLAB circshift方法吗
- 使用 MATLAB 编码器生成C++代码:编译错误"undefined reference to `rgb2gray_tbb_real64'"
- 无法在windows上使用mingw将sqlite3与c连接
- 到连接组件算法的问题(递归)
- QTcpSocket在不阻塞GUI的情况下重新连接到服务器
- 无法在C++中建立与MySQL数据库的连接
- PC中的程序和PHONE中的本机描述应用程序之间的数据连接
- 在Qt Creator中,如何在连接到正在运行的进程后查看控制台输出
- 连接 dockerized 模型和 dockerized 数据库时出现"无法 SQLConnect"错误
- 使用 bfs 解决连接组件问题时得到错误的答案
- 在C++的两个字符串中连接以逗号分隔的唯一值
- 如何修复valgrind启动时的致命错误(与libc6-dbg和libc6-dbg:i386连接)
- 连接 MATLAB 和 Visual Studios 的问题
- 如何将 Matlab 与 Visual Studio 连接以进行实时数据交换?
- 如何在C++程序中连接 MATLAB 中构建的经过训练的神经网络
- 在C++中拆分32位值,并在MATLAB中连接块
- 连接qt和matlab时出错
- openCV vs matlab矩阵连接