c++ - 如何显式声明 cv::Mat 类型作为 OpenCV 库函数的一部分

标签 c++ opencv

我目前正在尝试使用 cv::hconcat(std::vector<cv::Mat> vector_of_mats, cv::Mat dest) 连接 cv::Mat 对象.但是,我需要 objective-c v::Mat 的类型为 CV_32FC1而不是默认的 CV_8UC1 .

我尝试将 objective-c v::Mat 构建为:

    descriptor = cv::Mat::zeros(tmp.size(), 256, CV_32FC1);
    cv::hconcat(vec, descriptor);

但这仍然会产生一个 CV_8UC1 cv::Mat对于 descriptor . cv::Mat 的类型在 vector 中是CV_8UC1 .那是我的问题所在吗?

提前致谢!

最佳答案

你的猜测是正确的! cv::Mat 的类型取自source

快速浏览一下 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);
}

关于c++ - 如何显式声明 cv::Mat 类型作为 OpenCV 库函数的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29752066/

相关文章:

c++ - cv::resize() 因访问冲突错误而失败(由 <struct at NULL> 引起)

python-3.x - 循环程序导致索引 # 超出轴 # 的范围

c++ - OllyDbg 无法调试visual studio exe

c++ - ROS 节点无法通过启动文件执行工作

python - 提高图像处理的准确性以计算真菌孢子

c++ - 基于 cmake 的项目 : checking for contrib modules 中的 OpenCV

opencv - 将 32 位 rgb 图像转换为 8 位 rgb C++

c++ - C++类中无法重载+运算符

c++ - 在 Mac 上使用 CDT 的 Eclipse

java - Netbeans(用于 c/c++ 的 MinGW 编译器)可以调用任意 C/C++ DLL(在 VS'05 中编译)吗?