gpt4 book ai didi

c++ - opencv:对 "Mat"的调用不明确

转载 作者:行者123 更新时间:2023-11-27 22:42:00 26 4
gpt4 key购买 nike

我尝试使用opencv计算HoG描述符,但是报错call to "Mat" is ambiguous被提出。

我在Error: Mat is ambiguous when using OpenCV下看到了答案

而且我不知道我的包含是否正确。

我的 opencv 包括:

#include <opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv/cv.hpp>
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <opencv2/ml/ml.hpp>
#include <string>

using namespace std;
using namespace cv;
using namespace cv::ml;

代码如下:

for (int j = 0; j < original[i]; j++) {
cv::Mat train_original;
train_original = cv::imread(original_path + std::to_string(j) + ".jpg", 1);

cv::resize(train_original, train_resize_image, cv::Size(128, 128), 0, 0, CV_INTER_LINEAR);
// 计算HOG descriptor
cv::HOGDescriptor hog(cv::Size(128, 128), cv::Size(64, 64), cv::Size(16, 16), cv::Size(8, 8), 9);
hog.compute(train_resize_image,train_descriptor);
cv::Mat descriptor_mat(cv::Mat(train_descriptor).t());
train_descriptors.push_back(descriptor_mat);
}

哪里train_descriptor类型为 std::vector<float>

行中出现错误

cv::Mat descriptor_mat(cv::Mat(train_descriptor).t());

任何帮助将不胜感激!谢谢!

最佳答案

您应该更改以下行:

cv::Mat descriptor_mat(cv::Mat(train_descriptor).t());

cv::Mat descriptor_mat = cv::Mat(train_descriptor).t();

因为 Mat operator = 可以处理 MatExpr 对象,而 Mat 构造函数不能(检查 OpenCV documentation )。但要小心使用此方法,因为它不会复制数据并共享它(如指针)。基本上,如果您想复制数据,您可以执行以下操作:

 cv::Mat descriptor_mat;
cv::transpose(cv::Mat(train_descriptor),descriptor_mat);

关于c++ - opencv:对 "Mat"的调用不明确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48166778/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com