我宣布
cv::Mat imageMatrix(bitmapEntry->GetHeight(), bitmapEntry->GetWidth(), ConvertToCVType(bitmapEntry), imageBytes);
cv::Mat rightImageMat;
cv::Mat leftImageMat;
SplitCVMatrix(imageMatrix, leftImageMat, rightImageMat);
我得到2160行和7680列,这是预期的。
当我通过引用将此矩阵传递给函数时,矩阵的结构是不同的:
OVOpenCVFilter::SplitCVMatrix(cv::Mat &matrix, cv::Mat &leftSplitMatrix, cv::Mat &rightSplitMatrix)
行等于2,步骤为7680,列为2160。
我没有收到我通过的相同结构。好像我在地址上得到什么,我应该怎样处理才能正确传递我的矩阵?
答案 0 :(得分:1)
我写了这段代码:
void SplitCVMatrix(cv::Mat &matrix, cv::Mat &leftSplitMatrix, cv::Mat &rightSplitMatrix) {
printf("rows: %d, columns: %d, step: %ld", matrix.rows, matrix.cols, matrix.step[0]);
}
int main(int argc, const char * argv[]) {
cv::Mat imageMatrix(2160, 7680, CV_8UC3, cv::Scalar(128, 128, 128));
cv::Mat rightImageMat;
cv::Mat leftImageMat;
SplitCVMatrix(imageMatrix, leftImageMat, rightImageMat);
return 0;
}
得到了这个输出:
rows: 2160, columns: 7680, step: 23040
所以我不同意你的说法,即原始的imageMatrix被正确构建(或者SplitCVMatrix
中发生了一些你没有向我们展示的事情)。您需要更仔细地查看传递给imageMatrix构造函数的值。
答案 1 :(得分:0)
这就是我所拥有的:
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>
using namespace std;
using namespace cv;
void printFromReference(Mat& src)
{
cout << "Rows: " << src.rows << endl;
cout << "Cols: " << src.cols << endl;
cout << "Step: " << src.step << endl;
cout << "Size: " << src.rows*src.cols*src.elemSize1() << endl;
}
int main(int argc, char** argv)
{
Mat bigImage(2160, 7680, CV_8UC1);
cout << "Before: " << endl;
cout << "Rows: " << bigImage.rows << endl;
cout << "Cols: " << bigImage.cols << endl;
cout << "Step: " << bigImage.step << endl;
cout << "Size: " << bigImage.rows*bigImage.cols*bigImage.elemSize1() << endl;
cout << endl << "After: " << endl;
printFromReference(bigImage);
return 0;
}
这会产生以下输出:
Before:
Rows: 2160
Cols: 7680
Step: 7680
Size: 16588800
After:
Rows: 2160
Cols: 7680
Step: 7680
Size: 16588800
所以,我倾向于同意SSteve ......你正在做的其他事情并没有正常工作......如果SplitCVMatrix
函数中你的步长看起来不正确,那么你需要确保你的ConvertToCVType
函数告诉构造函数要创建适当数量的通道。这只是一个猜测;一些代码会有所帮助:)