cv 出错error: no matching function for call to ‘merge(std::vector<cv::Mat>&)’ 48 | imwrite("merged_image.png", merge(images));
时间: 2024-04-15 21:28:05 浏览: 175
根据您提供的错误信息,看起来是在调用`merge`函数时出现了问题。根据OpenCV文档,`merge`函数需要传入一个`vector`类型的参数。然而,您可能在调用`merge`函数时传入了一个`vector<cv::Mat>`类型的参数,导致出现匹配错误。
要解决这个问题,您可以确保传入的参数是一个`vector<cv::Mat>`类型的变量。您可以尝试以下代码片段来解决这个问题:
```cpp
std::vector<cv::Mat> mergedImages;
cv::merge(images, mergedImages);
cv::imwrite("merged_image.png", mergedImages);
```
这样,您可以将`images`中的图像合并到`mergedImages`中,并将合并后的图像保存为"merged_image.png"。请确保在调用`merge`函数之前,您已经正确地定义和填充了`images`向量。
相关问题
[Error] no matching function for call to 'std::basic_istream<char>::getline(std::string&, int)'
这个错误提示是因为在使用 `std::getline` 函数时,第二个参数应该是一个字符类型的值,而不是一个整数。正确的用法是:`std::getline(istream &is, string &str, char delim)`,其中 `delim` 是一个字符类型的值,代表要使用哪个字符作为分隔符。
如果您想读取整行输入并存储到一个字符串中,可以这样写:
```C++
#include <iostream>
#include <string>
using namespace std;
int main() {
string line;
getline(cin, line);
cout << line << endl;
return 0;
}
```
在这个例子中,我们使用 `getline` 函数从标准输入流中读取一行输入,然后将其存储到一个名为 `line` 的字符串中。最后,我们将 `line` 字符串打印出来。
Mat img(channels, cv::Size(width, height), CV_32F, data); 这行报错 error: no matching function for call to ‘cv::Mat::Mat(const int&, cv::Size, int, float [460800])’
这个错误的原因是 `cv::Size` 的构造函数需要传入两个 `int` 类型的参数,而你传入的第一个参数是 `channels`,它的类型是 `int`,所以编译器认为你正在调用一个不存在的构造函数。你可以尝试将 `channels` 和 `cv::Size` 的参数分别传入构造函数,如下所示:
```
Mat img(cv::Size(width, height), CV_32F);
img = Mat::zeros(height, width, CV_32F);
```
然后再将 `data` 中的数据赋值给 `img` 即可。
阅读全文