Using OpenCV with gcc and CMake
2024-10-16 21:35:57
Using OpenCV with gcc and CMake
Note
We assume that you have successfully installed OpenCV in your workstation.
- The easiest way of using OpenCV in your code is to use CMake. A few advantages (taken from the Wiki):
- No need to change anything when porting between Linux and Windows
- Can easily be combined with other tools by CMake( i.e. Qt, ITK and VTK )
- If you are not familiar with CMake, checkout the tutorial on its website.
Steps
Create a program using OpenCV
Let’s use a simple program such as DisplayImage.cpp shown below.
#include <stdio.h>
#include <opencv2/opencv.hpp> using namespace cv; int main(int argc, char** argv )
{
if ( argc != 2 )
{
printf("usage: DisplayImage.out <Image_Path>\n");
return -1;
} Mat image;
image = imread( argv[1], 1 ); if ( !image.data )
{
printf("No image data \n");
return -1;
}
namedWindow("Display Image", WINDOW_AUTOSIZE );
imshow("Display Image", image); waitKey(0); return 0;
}
Create a CMake file
Now you have to create your CMakeLists.txt file. It should look like this:
cmake_minimum_required(VERSION 2.8)
project( DisplayImage )
find_package( OpenCV REQUIRED )
include_directories( ${OpenCV_INCLUDE_DIRS} )
add_executable( DisplayImage DisplayImage.cpp )
target_link_libraries( DisplayImage ${OpenCV_LIBS} )
Generate the executable
This part is easy, just proceed as with any other project using CMake:
cd <DisplayImage_directory>
cmake .
make
Result
By now you should have an executable (called DisplayImage in this case). You just have to run it giving an image location as an argument, i.e.:
./DisplayImage lena.jpg
You should get a nice window as the one shown below:
最新文章
- Level 4 A10: 飞张?
- javaWEB中的HttpServlet(企业开发使用)
- 详解DHV:怎么具体展示高价值
- python生态环境
- POJ 3692
- C#调用java接口报“Fault occurred while processing”异常问题
- php中12个魔术方法
- leetcode第40题--First Missing Positive
- Http相关
- [Swift]LeetCode926. 将字符串翻转到单调递增 | Flip String to Monotone Increasing
- FPM四:用OVP做查询跳转到明细
- hdu 3966(树链剖分+线段树区间更新)
- MariaDB:登陆报错:mysqladmin: connect to server at 'localhost' failed
- ASP.NET AJAX入门系列(11):在多个UpdatePanle中使用Timer控件
- 对Kalman(卡尔曼)滤波器的理解@@zz
- java web中读取properties文件时的路径问题
- lamp-linux2
- Docker-commit镜像提交
- angularjs中factory, service和provider
- jenkins 入门教程