gpt4 book ai didi

opencv - OpenCV2.3.1,基本程序,在QtCreator中不起作用

转载 作者:行者123 更新时间:2023-12-02 16:43:06 25 4
gpt4 key购买 nike

遵循《 OpenCV2-计算机视觉应用程序编程》一书中给出的第一个OpenCV程序,并按照所有设置QtCreator的步骤进行操作后,我仍然无法使程序按预期运行。

我正在使用Qt Creator 2.4.1(基于Qt 4.7.4(64位)),这就是我的.pro文件的样子-

QT       += core

QT -= gui

TARGET = myQtConsoleProject
CONFIG += console
CONFIG -= app_bundle

TEMPLATE = app


SOURCES += main.cpp

INCLUDEPATH += /usr/local/include

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

这是程序:
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>

int main(int argc, char *argv[])
{
// read an image
//cv::Mat image = cv::imread("lena.jpg", 1);
IplImage* img = cvLoadImage("/home/icarus/Pictures/lena.jpg");
cv::Mat image(img);
cvReleaseImage(&img);

// create image window named "My Image"
cv::namedWindow("My Image");

// show image on window
cv::imshow("My Image", image);

// wait key for 5000ms
cv::waitKey(50000);


return 1;
}

该代码显然没有编译错误或警告,但是单击QtCreator上的“运行”按钮(应先构建然后执行该应用程序),我得到的只是一个带有标题“qtcreator_process_stub”的终端窗口,该窗口显示:

Press to close this window...



但是我期望的是一个OpenCV GUI窗口,显示标题为“My Image”的lena.jpg。关于可能发生什么的任何线索?

在QtCreator应用程序控制台上,这是我看到的:
Starting /home/icarus/Work/MachineVision/Projects/myQtConsoleProject-build-desktop-Desktop_Qt_4_8_0_for_GCC__Qt_SDK__Release/myQtConsoleProject...
/home/icarus/Work/MachineVision/Projects/myQtConsoleProject-build-desktop-Desktop_Qt_4_8_0_for_GCC__Qt_SDK__Release/myQtConsoleProject exited with code 0

请注意,我肯定知道我有一个很好的源代码内置OpenCV-2.3.1安装,可以通过运行一些示例应用程序进行测试。另外,我非常确定.pro文件中指定的路径是正确的。

最佳答案

我不知道这是否是您所看到的行为的正确原因,但我确实认为这是一个问题。

根据文档http://opencv.willowgarage.com/documentation/cpp/basic_structures.html
(或者只是搜索它,以防链接失效)

用于Mat的构造函数定义如下:

Mat::Mat(const IplImage* img, bool copyData=false)

您使用了:
cv::Mat image(img);
cvReleaseImage(&img);

由于默认情况下copyData为false,并且您未传递'true'变量,因此这意味着Mat所引用的内存与IplImage相同。

现在,您已经在显示IplImage(img)之前释放了它的内存。那是个问题。

尝试添加
if(! image.data )                              // Check for invalid input
{
cout << "Could not open or find the image" << std::endl ;
return -1;
}

在显示图像之前进行验证。

关于opencv - OpenCV2.3.1,基本程序,在QtCreator中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9538811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com