我知道论坛中有很多相同的问题,但我找不到解决方案,而且我没有强大的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;
}
答案 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,但对它并不熟悉。我所知道的是你的代码可以很好地进行调整。