运算符->应用于“cv::Mat”而不是指针类型
时间: 2024-01-08 20:04:47 浏览: 234
OpenCV Mat实例详解六 实例源代码
这个错误通常是因为运算符->被错误地应用于cv::Mat对象,而不是指向对象的指针类型。
在C++中,运算符->通常用于指向对象的指针类型,而cv::Mat是一个类对象,不是指针类型。因此,当你想要访问cv::Mat对象的成员变量或成员函数时,应该使用点运算符(.)而不是箭头运算符(->)。
例如,当你想要访问cv::Mat对象的rows成员变量时,应该使用以下方式:
```cpp
cv::Mat img;
int rows = img.rows;
```
而不是以下方式:
```cpp
cv::Mat* img = new cv::Mat;
int rows = img->rows; // 错误的做法!
```
如果你确实需要使用指针类型访问cv::Mat对象,可以使用指针类型的智能指针(std::shared_ptr或std::unique_ptr)。
例如,使用std::shared_ptr访问cv::Mat对象的rows成员变量的方式如下:
```cpp
std::shared_ptr<cv::Mat> img = std::make_shared<cv::Mat>();
int rows = img->rows;
```
总之,避免在cv::Mat对象上使用箭头运算符(->)。
阅读全文