cv::Mat设置长宽适应窗口大小
时间: 2023-08-05 15:06:05 浏览: 130
要将cv::Mat适应窗口大小,你可以使用cv::resize函数来将其调整为所需的大小。下面是一个示例代码片段,其中将cv::Mat调整为与窗口大小相同:
```c++
cv::Mat image;
cv::namedWindow("Image Window", cv::WINDOW_NORMAL);
cv::resizeWindow("Image Window", 800, 600); // 设置窗口大小
cv::imshow("Image Window", image);
cv::waitKey(0);
```
在这个例子中,我们首先创建了一个cv::Mat对象,然后创建了一个窗口,并使用cv::resizeWindow函数将其大小设置为800x600像素。最后,我们使用cv::imshow函数将图像显示在窗口中。
相关问题
cv::Mat mat; mat.create(m_height, m_width, CV_8UC3); const cv::Mat buffer_mat(m_height, m_width, CV_16UC1, pBuff); cv::normalize(buffer_mat, mat, 0, 255, cv::NORM_MINMAX, CV_8UC3); cv::Mat dst_mat; cv::cvtColor(mat, dst_mat, cv::COLOR_BayerRG2RGB);优化这段代码
这段代码的主要目的是将一个输入的16位图像数据转换为8位RGB图像。这里有几个可以优化的地方:
1. 避免不必要的临时变量:可以避免使用 buffer_mat 作为临时变量,直接使用 pBuff 进行归一化操作。
2. 减少拷贝次数:可以在创建 mat 时直接使用 pBuff 进行初始化,避免创建一个额外的 16 位图像。
3. 使用 OpenCV 的函数代替手动计算:可以使用 cv::convertScaleAbs 函数代替 cv::normalize 函数进行归一化,在 cv::cvtColor 中使用 cv::COLOR_BayerBG2RGB 代替 cv::COLOR_BayerRG2RGB。
下面是优化后的代码:
```
cv::Mat mat(m_height, m_width, CV_8UC3, pBuff);
cv::convertScaleAbs(mat, mat, 255.0 / std::numeric_limits<uint16_t>::max());
cv::cvtColor(mat, mat, cv::COLOR_BayerBG2RGB);
```
这里使用了 cv::convertScaleAbs 函数直接对 mat 进行归一化,并且在 cv::cvtColor 中使用 cv::COLOR_BayerBG2RGB。
C++ 没有与参数列表匹配的 重载函数 实例 参数类型为: (cv::Mat, cv::Mat, cv::Mat) 对象类型是: cv::Mat
这个错误提示表明你在调用一个函数时,函数的参数类型与你传入的实参类型不匹配,导致无法匹配到任何一个重载函数。这个错误通常出现在函数重载较多的情况下,比如说你可能有多个函数名相同但参数类型不同的函数。
具体针对你的问题,错误提示表明你调用的函数需要三个 cv::Mat 类型的参数,但是你传入的实参类型不符合要求,导致编译器无法匹配到任何一个重载函数。你需要检查一下你调用该函数时传入的参数类型,确保它们与函数定义的参数类型匹配。
另外,如果你需要使用特定类型的 cv::Mat 对象调用该函数,你需要确保该对象的类型与函数定义的参数类型完全一致,包括大小、数据类型、通道数等。
阅读全文