c++ - OpenCV 编译 Ubuntu

标签 c++ opencv init qmake

我已经在 Ubuntu 中成功安装了 OpenCv 和 Qt。我可以调试和运行一些示例代码,但是当我创建 QtConsole 应用程序时,我无法构建它... 这是我的示例代码,用于随机白色图像中的一些像素

opencv2/core/core.hpp
opencv2/highgui/highgui.hpp
void salt(cv::Mat &image, int n)
{
    for(int k=0; k<n; k++)
    {
        int i=rand()%image.cols;
        int j=rand()%image.rows;

        if(image.channels() == 1)
        {
            image.at<uchar>(j,i)=255;
        }
        else if(image.channels() == 3)
        {
            image.at<cv::Vec3b>(j,i)[0]=255;
            image.at<cv::Vec3b>(j,i)[1]=255;
            image.at<cv::Vec3b>(j,i)[2]=255;
        }
    }
}

int main()
{
    cv::Mat resim = cv::imread("boldt.jpg");
    salt(resim,3000);
    cv::namedWindow("Cerceve");
    cv::imshow("Cerceve",resim);
}

我已经在 .pro 文件中添加了我的库

INCLUDEPATH += /usr/local/include/opencv2

LIBS += -L/usr/local/lib -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_features2d -lopencv_calib3d

当我尝试从终端运行程序时 它说:

init done

opengl support available

然后什么也没发生.. 调试时没有报错

最佳答案

在 main() 的末尾添加一个 cv::waitKey(..)

cv::imshow("Cerceve",resim);
cv::waitKey(0);
return 0;

调用 cv::waitKey(param) 是至关重要的,因为它会处理您打开的窗口中的事件循环(除了返回用户在等待时间内按下的键)。这里的 param 是函数返回前等待的毫秒数。使用 0 无限等待直到按下某个键。

关于c++ - OpenCV 编译 Ubuntu,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11135718/

相关文章:

java - Java读取protobuf消息时出现异常

opencv - PC/手机如何通过一张照片识别人物?

c - 实现用户级线程库但代码不断出现段错误,有什么想法吗?

Swift 可选初始化

npm - npm init -y 是什么意思

c++ - 如何在 C++ 中模拟成员对象

c++ - 访问线程内的主对话框变量 (MFC)

c++ - C++ 中的动态零长度数组

c++ - 在没有 Visual Studio 的情况下使用 C++ 安装 Opencv

c++ - 如何使 Opencv SVM 更快?