'cv :: Mat :: type':非标准语法;使用'&'创建指向成员的指针

时间:2018-03-17 07:45:21

标签: c++ mat

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

我有一个课程如下。当在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;
}

1 个答案:

答案 0 :(得分:1)

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

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

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

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

这将返回你需要的int。

顺便说一下,我已经涉足过OpenCV,但对它并不熟悉。我所知道的是你的代码可以很好地进行调整。