OpenCV 将一个矩阵复制到另一个矩阵的第一列中
opencv copy one matrix into the first column of another matrix
我有一个指针向量,指向我从我的凸轮和图像采集卡获得的图像(大小 w=96 h=100 NoImg=100)。 az 你看我正在创建它们的矩阵并开始逐个像素地读取数据。 下一步是创建一个更大的矩阵(H=9600 W=100),它可以在第一列中容纳一个图像的所有像素数据, 和下一个图像数据到第二列,但我达到 100 张图像的时间。我想知道 opencv 中是否有任何足够的方法或预准备好的方法,可以帮助我将所有图像数据直接复制到另一个矩阵的一列?还是我需要像下面的代码一样逐个读取所有像素,然后将它们一个接一个地写入另一个像素中?编辑我最终得到以下代码
cv::Mat _mainMatrix(_imageSize,_totalImgNO,CV_8UC1);
//loop for creating a matrix of each image in the memory
for(counter=0;counter<_totalImgNO;counter++){
unsigned char* _pointer=(unsigned char*)_imgPtrVector.at(counter);
cv::Mat _matrixImage(cv::Size(width,height), CV_8UC1,_pointer , cv::Mat::AUTO_STEP);
channels=_matrixImage.channels();
nRows=_matrixImage.rows * channels;
nCols=_matrixImage.cols;
if (_matrixImage.isContinuous())
{
nCols *= nRows;
nRows = 1;
}
for(int i = 0; i < nRows; ++i)
{
p = _matrixImage.ptr<uchar>(i);
for (int j = 0; j < nCols; ++j)
{
if(iRow<_totalImgNO && jCol<_imageSize){
_mainMatrix.at<uchar>(iRow,jCol)=p[j];
iRow++;
}
}
}
jCol++;
iRow=0;
_matrixImage.~Mat();
}
OpenCV 迭代器是 STL 迭代器。这意味着,您可以在它们上使用 STL 函数。
粗略的例子:
cv::Mat1b bigmat(9600, 100);
for (int i = 0; i < bigmat.cols; ++i) {
cv::Mat1b column = bigmatrix.col(i);
cv::Mat1b &source = *(images[i]);
std::copy(source.begin(), source.end(), column.begin());
}
我认为
你想要的真的很接近重塑功能。
告诉我我是否错了:)
Opencv 重塑
相关文章:
- C++ STD 函数运算符:有没有一种方法可以通过函数将一个向量映射到另一个向量上?
- ::grpc::ServerReaderWriter 对象在另一个线程中一段时间后无法调用
- 从我的2d数组中的一列返回的字符串值被压缩为一个字符串(在Mac os上打开Windows txt文件)
- 是否有可能通过指向另一个未关联的子对象的指针来获取指向一个子对象的指针?
- 如果A("whole")有一组B("parts"),如何同步"part" B从A "whole"到另一个A的转移?
- 只有一列适合其内容大小,而另一列则拉伸
- 从另一个线程更新QT小部件的一种详细方法
- 循环在此代码中仅迭代一次,而在另一个代码中正确迭代
- 如何以静态方式使用另一个 constexpr 数组初始化一个数组
- 一种体面的方式来转换const列表参考参数,然后传递到另一个函数
- 将元素从一个数组复制到另一个 c++
- 在一个结构中,使用一个数组字段访问另一个是否合法
- 如何将一个数组的每个元素与另一个元素进行比较(如果存在),然后打印是,否则否
- 按列对CSV文件进行排序,并与C 中的另一列进行比较
- 从矩阵复制列向量到OpenCV中另一个矩阵的每个col
- 将一个数组值指向同一数组的另一个值-C++
- mutex::lock() 检查一次解锁状态是否已经被另一个线程锁定?
- 每隔一行或每一列提取一个特征矩阵作为一个新矩阵
- 将一个数组内容放入另一个 2D 数组行和列中
- 从输入文件的最后一列决定一个例程