OpenCV 2.4.9:程序没有在Eclipse

时间:2016-11-06 12:08:17

标签: c++ eclipse opencv

我对openCV有一个非常奇怪的问题。 经过长时间的努力将所有图书馆联系起来之后,我终于认为我让openCV与Eclipse合作。

因此,我开辟了一个新项目并粘贴在一个示例程序中,该程序取自openCV的网站。 我构建并运行该程序,但它只是终止。即使是印刷语句也不会执行。

只有在注释掉所有与openCV相关的代码后,我的print语句才会执行..

我调试了程序,但一切似乎都运行良好。

我的测试程序:

#include <iostream>
#include <vector>
#include <stdio.h>
#include <opencv2/opencv.hpp>

using namespace cv;
using namespace std;

void createAlphaMat(Mat &mat)
{
    CV_Assert(mat.channels() == 4);
    for (int i = 0; i < mat.rows; ++i) {
        for (int j = 0; j < mat.cols; ++j) {
            Vec4b& bgra = mat.at<Vec4b>(i, j);
            bgra[0] = UCHAR_MAX; // Blue
            bgra[1] = saturate_cast<uchar>((float (mat.cols - j)) / ((float)mat.cols) * UCHAR_MAX); // Green
            bgra[2] = saturate_cast<uchar>((float (mat.rows - i)) / ((float)mat.rows) * UCHAR_MAX); // Red
            bgra[3] = saturate_cast<uchar>(0.5 * (bgra[1] + bgra[2])); // Alpha
        }
    }
}

int main() {
    cout << "!!!Hello World!!!" << endl;

    // Create mat with alpha channel
    Mat mat(480, 640, CV_8UC4);
    createAlphaMat(mat);

    vector<int> compression_params;
    compression_params.push_back(CV_IMWRITE_PNG_COMPRESSION);
    compression_params.push_back(9);

    try {
        imwrite("alpha.png", mat, compression_params);
    }
    catch (runtime_error& ex) {
        fprintf(stderr, "Exception converting image to PNG format: %s\n", ex.what());
        return 1;
    }
    return 0;
}

我采取了让这件事半工作的步骤:

  1. 使用CMake下载并构建openCV
  2. 在Eclipse中创建一个新的C ++项目
  3. 将openCV构建文件夹添加到GCC C ++编译器
  4. 将mingw的自定义构建文件夹添加到库搜索路径(-L)
  5. 添加库(-l)
  6. 构建项目并运行它
  7. 起初我会错过对库的引用,因为mingw需要一个自定义构建来使用Eclipse。这就是我所做的。

    当我的防病毒程序运行时,我遇到了类似的问题,所以我禁用了它。

    现在奇怪的是:

    这不会起作用:

    #include <iostream>
    #include <vector>
    #include <stdio.h>
    #include <opencv2/opencv.hpp>
    
    using namespace cv;
    using namespace std;
    
    void createAlphaMat(Mat &mat)
    {
        CV_Assert(mat.channels() == 4);
        for (int i = 0; i < mat.rows; ++i) {
            for (int j = 0; j < mat.cols; ++j) {
                Vec4b& bgra = mat.at<Vec4b>(i, j);
                bgra[0] = UCHAR_MAX; // Blue
                bgra[1] = saturate_cast<uchar>((float (mat.cols - j)) / ((float)mat.cols) * UCHAR_MAX); // Green
                bgra[2] = saturate_cast<uchar>((float (mat.rows - i)) / ((float)mat.rows) * UCHAR_MAX); // Red
                bgra[3] = saturate_cast<uchar>(0.5 * (bgra[1] + bgra[2])); // Alpha
            }
        }
    }
    
    int main() {
        cout << "!!!Hello World!!!" << endl;
    
        return 0;
    }
    

    但这会:

    #include <iostream>
    #include <vector>
    #include <stdio.h>
    #include <opencv2/opencv.hpp>
    
    using namespace cv;
    using namespace std;
    
    int main() {
        cout << "!!!Hello World!!!" << endl;
    
        return 0;
    }
    

    到底是什么?

    编辑:DEBUGGER OUPUT

    • 目标字节序自动设置(当前是小端)
    • [新主题13932.0x155c]
    • [新主题13932.0x3730]
    • [新主题13932.0x31a0]
    • [新主题13932.0x2e84]
    • [主题13932.0x2e84退出,代码为3221225781]
    • [Thread 13932.0x31a0退出,代码为3221225781]

0 个答案:

没有答案