c++ - 该程序已退出,代码为 0 (0x0)。 C++

标签 c++ opencv

我遇到了这个错误。我正在使用 OpenCV,我正在尝试在单个图像中检测更多模板。这是我的代码:

int main() {
    cv::Mat ref = cv::imread("image.jpg");
    for (int i = 0; i < numTemplates; i++){

        cv::Mat tpl = cv::imread(names[i]);
        if (ref.empty() || tpl.empty())
            return -1;

        cv::Mat gref, gtpl;

        cv::cvtColor(tpl, gtpl, CV_BGR2GRAY);
        cv::cvtColor(ref, gref, CV_BGR2GRAY);
        cv::Mat res(ref.rows - tpl.rows + 1, ref.cols - tpl.cols + 1, CV_32FC1);
        cv::matchTemplate(gref, gtpl, res, CV_TM_CCOEFF_NORMED);
        cv::threshold(res, res, 0.8, 1., CV_THRESH_TOZERO);

        while (true)
        {
            double minval, maxval, threshold = 0.8;
            cv::Point minloc, maxloc;
            cv::minMaxLoc(res, &minval, &maxval, &minloc, &maxloc);

            if (maxval >= threshold)
            {
                cv::rectangle(
                            ref,
                            maxloc,
                            cv::Point(maxloc.x + tpl.cols, maxloc.y + tpl.rows),
                            CV_RGB(0, 255, 0), 2
                            );
                cv::floodFill(res, maxloc, cv::Scalar(0), 0, cv::Scalar(.1), cv::Scalar(1.));
            }
            else
                break;
        }
    }
    cv::imshow("reference", ref);
    cv::waitKey();
    return 0;
}

最佳答案

退出代码是您的 main 返回的值(有一些异常(exception)情况,例如它可能是发送到 exit 函数的值)。返回值 0(通常)被认为是成功的信号。

作为练习,您可以尝试返回其他内容并查看它是否会以另一个退出代码退出(但某些程序可能会将其视为您程序的错误指示,因此请事后将其改回)。

关于c++ - 该程序已退出,代码为 0 (0x0)。 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33256719/

相关文章:

python - 使用 OpenCV 在 Python 中进行 HOG 训练和检测

C++ 头文件 - 包含什么

c++ - 代码不工作。使用堆栈

java - 在 opencv for android 中使用运动分析和对象跟踪进行瞳孔运动

opencv - 在opencv中使用SVM技术进行图像分类

python-3.x - 高斯噪声不会应用于整个图像

c++ - opencv 中 mpeg 解码器的 4 个字符 ID 是什么

c++ - Windows EVENTLOGRECORD 结构中的可变长度字段如何工作?

c++ - 有没有办法在两个 ROS 节点之间有优先级?

c++ - 在 C++ 和 Qt 中显示 yuv 数据的成像库