OpenCV的Hello World

按照前文的步骤,我们已经在Windows机器上把OpenCV源代码编译成了DLL。接下来的问题自然是,我们怎么在自己的项目中使用OpenCV?我们将从零开始编写第一个OpenCV “Hello World”程序。通过本文的练习,大家将掌握:

  1. 在自己的项目中配置OpenCV开发环境,包括include目录、lib目录等等;
  2. 通过cv::imread函数读取一个图像文件;
  3. 通过cv::imshow函数将图像在窗口中显示出来;
  4. 通过cv::imwrite函数将图像写入一个文件。

让我们开始吧!先用Visual Studio创建一个C++的控制台程序,项目命名为OpenCVFirstApp,并让它与opencv源代码目录平级,看起来是这样的:

接着,打开OpenCVFirstApp项目属性窗口,在C/C++页面的“附加包含目录”中加入:

..\opencv\include

..\opencv\build

..\opencv\modules\core\include

..\opencv\modules\highgui\include

..\opencv\modules\imgproc\include

..\opencv\modules\imgcodecs\include

..\opencv\modules\videoio\include

其中,第一个是OpenCV项目的顶级包含目录,第二个是之前编译OpenCV源码时的生成目录,第三个往下是OpenCV各个核心模块的包含目录,可以依据你的项目实际使用情况、用到了哪些模块就把这些模块的包含目录加进来。

再接着,在项目的属性页点击“链接器”,在“输入” | “附加依赖项” 中增加配置:

Debug版本链接的库:

..\opencv\build\lib\Debug\opencv_core4100d.lib

..\opencv\build\lib\Debug\opencv_highgui4100d.lib

..\opencv\build\lib\Debug\opencv_imgproc4100d.lib

..\opencv\build\lib\Debug\opencv_imgcodecs4100d.lib

..\opencv\build\lib\Debug\opencv_videoio4100d.lib

Release版本链接的库:

..\opencv\build\lib\Release\opencv_core4100.lib

..\opencv\build\lib\Release\opencv_highgui4100.lib

..\opencv\build\lib\Release\opencv_imgproc4100.lib

..\opencv\build\lib\Release\opencv_imgcodecs4100.lib

..\opencv\build\lib\Release\opencv_videoio4100.lib

然后,就可以开始编写程序代码了。偷个懒,从opencv开源项目的samples\cpp\tutorial_code\introduction\windows_visual_studio_opencv\introduction_windows_vs.cpp抄一下吧O(∩_∩)O:

// OpenCVFirstApp.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <opencv2/core.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>

#include <iostream>

using namespace cv;
using namespace std;

int main(int argc, char** argv)
{
    if (argc != 2)
    {
        cout << " Usage: " << argv[0] << " ImageToLoadAndDisplay" << endl;
        return -1;
    }

    Mat image;
    image = imread(argv[1], IMREAD_COLOR); // Read the file

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

    namedWindow("Display window", WINDOW_AUTOSIZE); // Create a window for display.
    imshow("Display window", image); // Show our image inside it.

    imwrite("D:\\opencv_copy.png", image); // Write to a new file

    waitKey(0); // Wait for a keystroke in the window
    return 0;
}

然后,编译,运行!然后…

怎么回事?忘了非常重要的一步哦:需要把OpenCV的运行时库(在opencv\build\bin目录下)拷贝到目标工程里来,具体而言就是这5个DLL:opencv_core4100.dll、opencv_highgui4100.dll、opencv_imgcodecs4100.dll、opencv_imgproc4100.dll、opencv_videoio4100.dll。这是Release版本的库;Debug版本需要拷贝文件名以字母“d”结尾的一组DLL。

OpenCVFirstApp的完整代码:https://github.com/luqiming666/OpenCVFirstApp

  • 23
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值