我目前正在尝试使用cv::hconcat(std::vector<cv::Mat> vector_of_mats, cv::Mat dest)
连接cv :: Mat对象。但是,我需要目标cv :: Mat为CV_32FC1
类型,而不是默认的CV_8UC1
。
我尝试将目标cv :: Mat构建为:
descriptor = cv::Mat::zeros(tmp.size(), 256, CV_32FC1);
cv::hconcat(vec, descriptor);
但是仍然会为CV_8UC1
生成cv::Mat
descriptor
。向量中cv::Mat
的类型为CV_8UC1
。那是我的问题所在吗?
提前致谢!
答案 0 :(得分:1)
你的怀疑是正确的! cv::Mat
的类型取自来源。
快速查看cv::hconcat
的源代码确认了这一点:
void cv::hconcat(const Mat* src, size_t nsrc, OutputArray _dst) {
....
_dst.create( src[0].rows, totalCols, src[0].type()); // Type taken from src
....
}
void cv::hconcat(InputArray _src, OutputArray dst)
{
std::vector<Mat> src;
_src.getMatVector(src);
hconcat(!src.empty() ? &src[0] : 0, src.size(), dst);
}