• 物联网视觉处理-opencv在win下安装及应用


    目录

    一、opencv

    二、准备及安装

     三、使用测试


    一、opencv

            在物联网工程项目中,数据源最大的无疑就是各种摄像机捕获的图像数据,因此视觉数据处理就是物联网数据治理中一个极为重要的一环。开源的视觉处理函数库OpenCV提供的非常丰富的视觉处理算法,可以在Windows,Android,Maemo,FreeBSD,OpenBSD,iOS,Linux 和Mac OS等平台上运行。OpenCV用C++语言编写,OpenCV 拥有包括 500 多个C函数的跨平台的中、高层 API。它的主要接口也是C++语言,但是依然保留了大量的C语言接口。该库也有大量的Python、Java and MATLAB/OCTAVE(版本2.5)的接口。其也经过适当改写可以正常的运行在DSP系统和ARM系统中。

    二、准备及安装

            opencv可以在官网(Courses - OpenCV)、github、gitee下载源码编译自己所需要的特定功能的库,也可以在SourceForge获得已经编译好的库直接应用。

            本文介绍在win10(64bit)下载源码自行编译的情况,准备工作如下:

            安装好vs2015 、cmake 、git、pyshon

             创建opencv的文件目录D:\workForMy\OpenCVLib,可提前下载好opencv源码(本文在国内源码网站gitee.com下载,速度较快):

            git clone git@gitee.com:mirrors/opencv.git

            git clone git@gitee.com:cubone/opencv_contrib.git

            在该目录下创建脚本文件install_opencv.sh

    1. #!/bin/bash -e
    2. myRepo=$(pwd)
    3. #按自己电脑vs版本需要设置
    4. CMAKE_GENERATOR_OPTIONS=-G"Visual Studio 14 2015 Win64"
    5. #如果在该目录下没opencv源码,先行下载
    6. #本文采用gitee.com的下载源,可以在该网站下搜索opencv获得地址
    7. if [ ! -d "$myRepo/opencv" ]; then
    8. echo "cloning opencv"
    9. git clone git@gitee.com:mirrors/opencv.git
    10. else
    11. cd opencv
    12. git pull --rebase
    13. cd ..
    14. fi
    15. #如果在该目录下没opencv_contrib源码,先行下载
    16. #本文采用gitee.com的下载源,可以在该网站下搜索opencv_contrib获得地址
    17. if [ ! -d "$myRepo/opencv_contrib" ]; then
    18. echo "cloning opencv_contrib"
    19. git clone git@gitee.com:cubone/opencv_contrib.git
    20. else
    21. cd opencv_contrib
    22. git pull --rebase
    23. cd ..
    24. fi
    25. RepoSource=opencv
    26. mkdir -p build_opencv
    27. pushd build_opencv
    28. CMAKE_OPTIONS=(-DBUILD_PERF_TESTS:BOOL=OFF -DBUILD_TESTS:BOOL=OFF -DBUILD_DOCS:BOOL=OFF -DWITH_CUDA:BOOL=OFF -DBUILD_EXAMPLES:BOOL=OFF -DINSTALL_CREATE_DISTRIB=ON)
    29. set -x
    30. cmake "${CMAKE_GENERATOR_OPTIONS[@]}" "${CMAKE_OPTIONS[@]}" -DOPENCV_EXTRA_MODULES_PATH="$myRepo"/opencv_contrib/modules -DCMAKE_INSTALL_PREFIX="$myRepo/install/$RepoSource" "$myRepo/$RepoSource"
    31. echo "************************* $Source_DIR -->debug"
    32. cmake --build . --config debug
    33. echo "************************* $Source_DIR -->release"
    34. cmake --build . --config release
    35. cmake --build . --target install --config release
    36. cmake --build . --target install --config debug
    37. popd

            启动vs2015 x64命令工具,运行install_opencv.sh,编译时间会很久,挺吃CPU的,需要耐心等待。编译完成后如下:

             OpenCV的动态库、命令工具输出目录,该目录需要进行win环境变量设置

             库文件输出目录

             在系统环境变量中设置OPENCV_DIR=D:\workForMy\OpenCVLib\install\opencv\x64\vc14,并在Path中加入%OPENCV_DIR%\bin

     三、使用测试

            创建工程如下:

    1. test
    2. bin
    3. build_win
    4. src
    5. main.cpp
    6. CMakeLists.txt

             main.cpp测试源码如下:

    1. #include
    2. #include
    3. #include
    4. #include
    5. using namespace cv;
    6. using namespace std;
    7. //加载一张图片并窗口显示
    8. int main( int argc, char** argv )
    9. {
    10. if( argc != 2)
    11. {
    12. cout <<" Usage: " << argv[0] << " ImageToLoadAndDisplay" << endl;
    13. return -1;
    14. }
    15. Mat image;
    16. image = imread(argv[1], IMREAD_COLOR); // Read the file
    17. if( image.empty() ) // Check for invalid input
    18. {
    19. cout << "Could not open or find the image" << std::endl ;
    20. return -1;
    21. }
    22. namedWindow( "Display window", WINDOW_AUTOSIZE ); // Create a window for display.
    23. imshow( "Display window", image ); // Show our image inside it.
    24. waitKey(0); // Wait for a keystroke in the window
    25. return 0;
    26. }

            CMakeLists.txt

    1. # CMake 最低版本号要求
    2. cmake_minimum_required (VERSION 2.8)
    3. # 项目信息
    4. project (opencv_test)
    5. #
    6. message(STATUS "windows compiling...")
    7. add_definitions(-D_PLATFORM_IS_WINDOWS_)
    8. set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
    9. set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
    10. set(WIN_OS true)
    11. #
    12. set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
    13. # 指定源文件的目录,并将名称保存到变量
    14. SET(source_h
    15. #
    16. )
    17. SET(source_cpp
    18. #
    19. ${PROJECT_SOURCE_DIR}/src/main.cpp
    20. )
    21. #头文件目录
    22. include_directories(${PROJECT_SOURCE_DIR}/../opencv/include)
    23. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4819")
    24. add_definitions(
    25. "-D_CRT_SECURE_NO_WARNINGS"
    26. "-D_WINSOCK_DEPRECATED_NO_WARNINGS"
    27. "-DNO_WARN_MBCS_MFC_DEPRECATION"
    28. "-DWIN32_LEAN_AND_MEAN"
    29. )
    30. link_directories(
    31. ${PROJECT_SOURCE_DIR}/../opencv/x64/vc14/bin
    32. ${PROJECT_SOURCE_DIR}/../opencv/x64/vc14/lib
    33. )
    34. if (CMAKE_BUILD_TYPE STREQUAL "Debug")
    35. set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${PROJECT_SOURCE_DIR}/bin)
    36. # 指定生成目标
    37. add_executable(opencv_testd ${source_h} ${source_cpp})
    38. target_link_libraries(opencv_test opencv_world460d.lib opencv_img_hash460d.lib)
    39. else(CMAKE_BUILD_TYPE)
    40. set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${PROJECT_SOURCE_DIR}/bin)
    41. # 指定生成目标
    42. add_executable(opencv_test ${source_h} ${source_cpp})
    43. target_link_libraries(opencv_test opencv_world460.lib opencv_img_hash460.lib)
    44. endif (CMAKE_BUILD_TYPE)

            编译命令如下,重新启动vs2015 x64的命令工具(使前面配置的环境变量生效),进入D:\workForMy\OpenCVLib\install\test\build_win目录,编译如下:

    1. cd D:\workForMy\OpenCVLib\install\test\build_win
    2. cmake -G "Visual Studio 14 2015 Win64" -DCMAKE_BUILD_TYPE=Release ..
    3. msbuild opencv_test.sln /p:Configuration="Release" /p:Platform="x64"

            进入程序输出目录D:\workForMy\OpenCVLib\install\test\bin,随便拷贝一张图片到该目录下,例如2.bmp,然后启动程序opencv_test.exe 2.bmp,运行效果如下:

             表明编译库可用。

  • 相关阅读:
    【刷题记录⑩】Java工程师丨字节面试真题(四)
    Vmware设置共享文件夹实现与ubuntu文件共享
    flutter: 获取用户输入
    如何批量修改图片宽高尺寸
    vue 项目运行过程中浏览器报Out of Memory
    记一次 .NET 某工控视觉软件 非托管泄漏分析
    【js】map、filter、reduce、fill(待补充...)
    项目管理证书 PMP 的含金量高吗?
    模型部署 利用Tensorflow Serving部署模型
    力扣刷题 day46:10-16
  • 原文地址:https://blog.csdn.net/py8105/article/details/127627204