Ubantu での OPENCV の最初の C++ 例

必要なツール
make、cmake
、make と cmake の違いと関連性:
参考リンク
https://www.jianshu.com/p/b3ddb0662c98

OPENCV のコンパイルの順序は、
元のファイル - CMakeLists.txt (手動で作成) - cmake - makefile - make - 実行可能ファイルの生成
したがって、Ubantu で OPENCV を記述するには、もう 1 つの CMakeLists.txt ファイルを変更する必要があります。

必要なファイル
ここに画像の説明を挿入します
最初のステップの
C++ コード:

 //该头文件中已经包含了OpenCV中各个模块的头文件
  2 #include<opencv2/opencv.hpp>
  3 
  4 //cv 命名空间,如果希望不要每次都输入 cv:: ,则可使用下面语句:using namespace cv;
  5 using namespace cv;
  6 
  7 /*
  8 int main(int argc, char **argv) 用于运行时,把命令行参数传入主程序。
  9 argc -- 命令行参数总个数,包括可执行程序名。
 10 argv[i] -- 第 i 个参数。
 11 argv[0] -- 可执行程序名。
 12 例如运行: abc.exe
 13 argc 等于 1, argv[0] 是 "abc.exe"
 14 例如运行:rec.exe 4 5.2
 15 argc 等于 3, argv[0] 是 "rec.exe", argv[1] 是 "4", argv[2] 是 "5.2".
 16 */
 17 int main(int argc,char **argv)
 18 {
    
    
 19     //Mat是c++中类的概念,不再需要手动分配其内存大小,当不需要使用它的时候也不再需要手动释放它
 20     Mat img=imread("lena.jpg");
 21     //和Python opencv的写法相同,展示图像
 22     imshow("meinv",img);
 23     //waitKey()是OpenCV中的内置函数,语句waitKey(0);表示“暂停程序,等待一个按键输入”!也就是说,当程序执行到waitKey(0);时,程序被暂停运行,只有当你输
    入一个按键时,它才会继续运行。
 24     waitKey(0);
 25 }

ステップ 2
CMakeLists.txt を変更します (このファイルは OPENCV/samples/cpp/example_cmake/ の下のプロジェクト ファイルにコピーできます)

PROJECT(OpenCV_Example)           //这是建立一个工程项目(类似于我们VS中建立C++项目一样),括号里面时工程名,工程名我们可以任意给,最后程序编译出来的可执行文件就是这个名字

CMAKE_MINIMUM_REQUIRED(VERSION 2.6)    //这是对CMake工具最低版本要求,这里我们要检查下我们的CMake工具的版本信息,我们可以使用命令“cmake --version”查看
if(COMMAND cmake_policy)            
      cmake_policy(SET CMP0003 NEW)
endif(COMMAND cmake_policy)
 
FIND_PACKAGE( OpenCV REQUIRED )   //这是cmake用来查找opencv包用的,不用改

# Declare the target (an executable)
ADD_EXECUTABLE(OpenCV_Example read.cpp)      //这里括号里面的两个参数分别是工程项目名和我们要编译文件名的意思,记住中间一空格键隔开

TARGET_LINK_LIBRARIES(OpenCV_Example ${
    
    OpenCV_LIBS})  //这是我们链接到OpenCV库的环节,我们只要更改前面第一个参数位我们的工程项目名即可

#MESSAGE(STATUS "OpenCV_LIBS: ${OpenCV_LIBS}")     //好了,就修改这么点东西,保存,关闭。

:一部のプロジェクト名は使用できません。具体的な理由はわかりません。テストをしましたが、うまくいきませんでした。ピットから抜け出すのに時間がかかりました。エラーは次のとおりです。 3:
ここに画像の説明を挿入します
コマンド
を入力します

sudo cmake .   //.的意思是执行当前目录,一定要加上sudo,不然可能会报错
sudo make      //同样也一定要加上root权限
./OpenCV_Example   //执行文件

参考リンク:https://www.cnblogs.com/woshijpf/p/3840530.html

おすすめ

転載: blog.csdn.net/weixin_45950842/article/details/118607699