'cv::Mat::type':语法不规范;使用“&”创建指向成员的指针

'cv::Mat::type': non-standard syntax; use '&' to create a pointer to member

我知道论坛里有很多相同的问题,但我找不到解决方案,而且我的c++基础也不强。

我有一个 class 如下。当在main()中调用检测器函数时,错误发生在行Mat output = Mat::zeros(input.rows, input.cols, input.type);.

class CardDetector
{
    string const ORIGINAL = "original";
    string const OUTPUT = "output";
public:
    CardDetector()
    {
        cout << "testing";
    }
    void detect()
    {
        namedWindow(ORIGINAL, WINDOW_AUTOSIZE);
        namedWindow(OUTPUT, WINDOW_AUTOSIZE);
        Mat input = imread("top.jpg", 1);
        Mat output = edgeDetection(input);
        resize(input, input, Size(400, 500));
        imshow(ORIGINAL, input);
        imshow(OUTPUT, output);
        waitKey(0);
    }

private:
    Mat edgeDetection(Mat input) {
        Mat output = Mat::zeros(input.rows, input.cols, input.type);
        return output;
    }
};

int main()
{
    CardDetector detector;
    detector.detect();
    return 0;
}

发生在我​​们所有人身上。在这一行中:

Mat output = Mat::zeros(input.rows, input.cols, input.type);

input.type 是一个函数,所以你想要:

Mat output = Mat::zeros(input.rows, input.cols, input.type());

这将 return 您需要的整数。

顺便说一句,我对OpenCV有所涉猎,但不是很熟悉。我所知道的是你的代码在进行调整后编译得很好。