opencv4.6调用cvInvert报错error: 'cvInvert' was not declared in this scope
时间: 2023-10-19 10:05:51 浏览: 39
在 OpenCV 4.6 中,cvInvert 已经被移除并且不再被支持。相反,可以使用 cv::invert 函数来执行矩阵的反转操作。请使用以下代码进行替换:
```c++
cv::Mat src, dst;
cv::invert(src, dst);
```
这应该可以解决您的问题。请注意,您还需要包含正确的 OpenCV 头文件和链接正确的库。
相关问题
编译报错error: ‘CV_WINDOW_FREERATIO’ was not declared in this scope
该错误是由于OpenCV版本更新导致的。在旧版本中,常量CV_WINDOW_FREERATIO用于设置窗口大小自由调整,但在新版本中,该常量已被删除。
解决方法是将CV_WINDOW_FREERATIO替换为CV_WINDOW_NORMAL,并使用cv::resizeWindow函数手动调整窗口大小。例如:
```cpp
cv::namedWindow("window", CV_WINDOW_NORMAL);
cv::resizeWindow("window", width, height);
```
其中,width和height分别为窗口的宽度和高度。
error: 'cvMul' was not declared in this scope
这个错误提示意味着程序无法找到 cvMul 函数的声明。cvMul 函数是 OpenCV 早期版本的一部分,在新版本中已被弃用。如果你正在使用新版本的 OpenCV,你需要使用 cv::multiply 函数代替 cvMul 函数。如果你想继续使用 cvMul 函数,你需要包含 legacy.hpp 头文件来使用它。可以在代码中添加以下代码行来解决此问题:
```cpp
#include <opencv2/opencv.hpp>
#include <opencv2/core/legacy.hpp>
```
这将包含所需的头文件,以便您可以使用 cvMul 函数。