OpenCV3.4.0编译

  OpenCV文件编译及问题记录。

目前最新OpenCV官网发布最新版为3.4.0(2017年12月23日发布)。

OpenCV库使用方法

下载地址:https://github.com/opencv/opencv/releases/tag/3.4.0 或 https://sourceforge.net/projects/opencvlibrary/

法一:使用官方提供的已编译好的文件

优点:方便快捷 缺点:版本限制 选择opencv-3.4.0-vc14_vc15.exe,下载完成后可以直接打开解压,即可在自己的项目中直接使用。 具体步骤为:

  1. 配置环境变量 打开电脑右键属性-高级系统设置-环境变量,Path中新增:E:\opencv\build\x64\vc14\bin,(此处为解压对应目录)。

  2. 引入相应头文件、库文件、链接库 打开自己的工程,右键属性-配置属性-VC++目录-包含目录,新增: E:\opencv\build\include\opencv E:\opencv\build\include\opencv2 E:\opencv\build\include

库目录,新增: E:\opencv\build\x64\vc14\lib (注意修改为你解压对应的目录)。

链接器-输入-附加依赖项,新增: opencv_world340d.lib 点击确定即可。 至此所有准备工作就绪,可以愉快地编译自己的工程啦。

但想如此一劳永逸解决问题,需符合以下特点:你的VS版本是VC14(2015)或VC15(2017)。 另附几种对应关系: Microsoft Visual Studio 6.0: VC6.0 Microsoft Visual Studio 2002: VC7.0 Microsoft Visual Studio 2003: VC7.1 Microsoft Visual Studio 2005: VC8.0 Microsoft Visual Studio 2008: VC9.0 Microsoft Visual Studio 2010: VC10.0 Microsoft Visual Studio 2012: VC11.0 Microsoft Visual Studio 2013: VC12.0 Microsoft Visual Studio 2014: VC13.0 Microsoft Visual Studio 2015: VC14.0 Microsoft Visual studio 2017: VC15.0

由于我使用VS2013,因此无法使用该方法。(当然,可以自行下载VS2015的运行库)。 我使用法二。

法二:自行编译

下载源码Source code并解压

下载CMake

下载地址:https://cmake.org/download/ 选择相应操作系统版本,例如我选择Windows win64-x64 Installer。安装,打开bin\cmake-gui.exe。

使用CMake

在Where is the source code中选择OpenCV解压目录,如:E:/opencv-3.4.0/opencv-3.4.0。 一般可以在解压目录下新建一个build文件夹,用来存放编译生成的文件。 于是,在Where to build the binaries中填入该路径,如:E:/opencv-3.4.0/opencv-3.4.0/build。(也可自行选择路径)

点击Configure,选择所需环境,如:Visual Studio 12 2013。进入漫长的等待。 如果区域有红色出现,需再次点击Configure,直到全部变成白色。

第一次Configure后:

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
General configuration for OpenCV 3.4.0 =====================================
  Version control:               unknown

  Platform:
    Timestamp:                   2018-01-29T14:29:24Z
    Host:                        Windows 10.0.16299 AMD64
    CMake:                       3.10.2
    CMake generator:             Visual Studio 12 2013
    CMake build tool:            C:/Program Files (x86)/MSBuild/12.0/bin/MSBuild.exe
    MSVC:                        1800

  CPU/HW features:
    Baseline:                    SSE SSE2
      requested:                 SSE2
    Dispatched code generation:  SSE4_1 SSE4_2 FP16 AVX
      requested:                 SSE4_1 SSE4_2 AVX FP16 AVX2
      SSE4_1 (3 files):          + SSE3 SSSE3 SSE4_1
      SSE4_2 (1 files):          + SSE3 SSSE3 SSE4_1 POPCNT SSE4_2
      FP16 (2 files):            + SSE3 SSSE3 SSE4_1 POPCNT SSE4_2 FP16 AVX
      AVX (5 files):             + SSE3 SSSE3 SSE4_1 POPCNT SSE4_2 AVX

  C/C++:
    Built as dynamic libs?:      YES
    C++11:                       YES
    C++ Compiler:                C:/software/vs2013/VC/bin/cl.exe  (ver 18.0.21005.1)
    C++ flags (Release):         /DWIN32 /D_WINDOWS /W4 /GR  /EHa  /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /Oi /fp:fast   /arch:SSE /arch:SSE2 /wd4127 /wd4251 /wd4324 /wd4275 /wd4512 /wd4589 /MP12  /MD /O2 /Ob2 /DNDEBUG  /Zi
    C++ flags (Debug):           /DWIN32 /D_WINDOWS /W4 /GR  /EHa  /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /Oi /fp:fast   /arch:SSE /arch:SSE2 /wd4127 /wd4251 /wd4324 /wd4275 /wd4512 /wd4589 /MP12  /MDd /Zi /Ob0 /Od /RTC1 
    C Compiler:                  C:/software/vs2013/VC/bin/cl.exe
    C flags (Release):           /DWIN32 /D_WINDOWS /W3  /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /Oi /fp:fast   /arch:SSE /arch:SSE2   /MP12  /MD /O2 /Ob2 /DNDEBUG  /Zi
    C flags (Debug):             /DWIN32 /D_WINDOWS /W3  /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /Oi /fp:fast   /arch:SSE /arch:SSE2   /MP12  /MDd /Zi /Ob0 /Od /RTC1 
    Linker flags (Release):      /machine:X86  /INCREMENTAL:NO  /debug
    Linker flags (Debug):        /machine:X86  /debug /INCREMENTAL 
    ccache:                      NO
    Precompiled headers:         YES
    Extra dependencies:
    3rdparty dependencies:

  OpenCV modules:
    To be built:                 calib3d core dnn features2d flann highgui imgcodecs imgproc ml objdetect photo python_bindings_generator shape stitching superres ts video videoio videostab
    Disabled:                    js world
    Disabled by dependency:      -
    Unavailable:                 cudaarithm cudabgsegm cudacodec cudafeatures2d cudafilters cudaimgproc cudalegacy cudaobjdetect cudaoptflow cudastereo cudawarping cudev java python2 python3 viz
    Applications:                tests perf_tests apps
    Documentation:               NO
    Non-free algorithms:         NO

  Windows RT support:            NO

  GUI: 
    Win32 UI:                    YES
    VTK support:                 NO

  Media I/O: 
    ZLib:                        build (ver 1.2.11)
    JPEG:                        build (ver 90)
    WEBP:                        build (ver encoder: 0x020e)
    PNG:                         build (ver 1.6.34)
    TIFF:                        build (ver 42 - 4.0.9)
    JPEG 2000:                   build (ver 1.900.1)
    OpenEXR:                     build (ver 1.7.1)

  Video I/O:
    Video for Windows:           YES
    DC1394:                      NO
    FFMPEG:                      NO
      avcodec:                   NO
      avformat:                  NO
      avutil:                    NO
      swscale:                   NO
      avresample:                NO
    GStreamer:                   NO
    DirectShow:                  YES

  Parallel framework:            Concurrency

  Trace:                         YES (with Intel ITT)

  Other third-party libraries:
    Lapack:                      NO
    Eigen:                       NO
    Custom HAL:                  NO

  NVIDIA CUDA:                   NO

  OpenCL:                        YES (no extra features)
    Include path:                E:/opencv-3.4.0/opencv-3.4.0/3rdparty/include/opencl/1.2
    Link libraries:              Dynamic load

  Python (for build):            NO

  Java:
    ant:                         NO
    JNI:                         NO
    Java wrappers:               NO
    Java tests:                  NO

  Matlab:                        NO

  Install to:                    E:/opencv-3.4.0/opencv-3.4.0/build/install
-----------------------------------------------------------------

Configuring done

此时可能出现常见问题:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
FFMPEG: Download: opencv_ffmpeg.dll
CMake Warning at cmake/OpenCVDownload.cmake:190 (message):
  FFMPEG: Download failed: 28;"Timeout was reached"

FFMPEG: Download: opencv_ffmpeg_64.dll
CMake Warning at cmake/OpenCVDownload.cmake:190 (message):
  FFMPEG: Download failed: 28;"Timeout was reached"

IPPICV: Download: ippicv_2017u3_win_ia32_general_20170822.zip
CMake Warning at cmake/OpenCVDownload.cmake:190 (message):
  IPPICV: Download failed: 28;"Timeout was reached"

总之就是有文件下载不成功。根据CMake的提示,打开build下的CMakeDownloadLog.txt,上面写着:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
use_cache "E:/opencv-3.4.0/opencv-3.4.0/.cache"
do_copy "opencv_ffmpeg.dll" "3ae76b105113d944984b2351c61e21c6" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/66b1fed06cf3510235f367f96aa26da5cb234a15/ffmpeg/opencv_ffmpeg.dll" "E:/opencv-3.4.0/opencv-3.4.0/build/3rdparty/ffmpeg"
#missing "E:/opencv-3.4.0/opencv-3.4.0/build/3rdparty/ffmpeg/opencv_ffmpeg.dll"
#check_md5 "E:/opencv-3.4.0/opencv-3.4.0/.cache/ffmpeg/3ae76b105113d944984b2351c61e21c6-opencv_ffmpeg.dll"
#mismatch_md5 "E:/opencv-3.4.0/opencv-3.4.0/.cache/ffmpeg/3ae76b105113d944984b2351c61e21c6-opencv_ffmpeg.dll" "299b46e2c4cf8047b0ef420c9a61c6ef"
#delete "E:/opencv-3.4.0/opencv-3.4.0/.cache/ffmpeg/3ae76b105113d944984b2351c61e21c6-opencv_ffmpeg.dll"
#cmake_download "E:/opencv-3.4.0/opencv-3.4.0/.cache/ffmpeg/3ae76b105113d944984b2351c61e21c6-opencv_ffmpeg.dll" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/66b1fed06cf3510235f367f96aa26da5cb234a15/ffmpeg/opencv_ffmpeg.dll"
do_copy "opencv_ffmpeg_64.dll" "cf3bb5bc9d393b022ea7a42eb63e794d" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/66b1fed06cf3510235f367f96aa26da5cb234a15/ffmpeg/opencv_ffmpeg_64.dll" "E:/opencv-3.4.0/opencv-3.4.0/build/3rdparty/ffmpeg"
#missing "E:/opencv-3.4.0/opencv-3.4.0/build/3rdparty/ffmpeg/opencv_ffmpeg_64.dll"
#check_md5 "E:/opencv-3.4.0/opencv-3.4.0/.cache/ffmpeg/cf3bb5bc9d393b022ea7a42eb63e794d-opencv_ffmpeg_64.dll"
#mismatch_md5 "E:/opencv-3.4.0/opencv-3.4.0/.cache/ffmpeg/cf3bb5bc9d393b022ea7a42eb63e794d-opencv_ffmpeg_64.dll" "3ab964d23e60d2b961737a8bb556bd45"
#delete "E:/opencv-3.4.0/opencv-3.4.0/.cache/ffmpeg/cf3bb5bc9d393b022ea7a42eb63e794d-opencv_ffmpeg_64.dll"
#cmake_download "E:/opencv-3.4.0/opencv-3.4.0/.cache/ffmpeg/cf3bb5bc9d393b022ea7a42eb63e794d-opencv_ffmpeg_64.dll" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/66b1fed06cf3510235f367f96aa26da5cb234a15/ffmpeg/opencv_ffmpeg_64.dll"
do_copy "ffmpeg_version.cmake" "ec59008da403fb18ab3c1ed66aed583b" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/66b1fed06cf3510235f367f96aa26da5cb234a15/ffmpeg/ffmpeg_version.cmake" "E:/opencv-3.4.0/opencv-3.4.0/build/3rdparty/ffmpeg"
#check_md5 "E:/opencv-3.4.0/opencv-3.4.0/build/3rdparty/ffmpeg/ffmpeg_version.cmake"
#match_md5 "E:/opencv-3.4.0/opencv-3.4.0/build/3rdparty/ffmpeg/ffmpeg_version.cmake" "ec59008da403fb18ab3c1ed66aed583b"
do_unpack "ippicv_2017u3_win_ia32_general_20170822.zip" "8a7680ae352c192de2e2e34936164bd0" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/dfe3162c237af211e98b8960018b564bc209261d/ippicv/ippicv_2017u3_win_ia32_general_20170822.zip" "E:/opencv-3.4.0/opencv-3.4.0/build/3rdparty/ippicv"
#check_md5 "E:/opencv-3.4.0/opencv-3.4.0/.cache/ippicv/8a7680ae352c192de2e2e34936164bd0-ippicv_2017u3_win_ia32_general_20170822.zip"
#mismatch_md5 "E:/opencv-3.4.0/opencv-3.4.0/.cache/ippicv/8a7680ae352c192de2e2e34936164bd0-ippicv_2017u3_win_ia32_general_20170822.zip" "c7fcfb626b50daa8bd728b7598328455"
#delete "E:/opencv-3.4.0/opencv-3.4.0/.cache/ippicv/8a7680ae352c192de2e2e34936164bd0-ippicv_2017u3_win_ia32_general_20170822.zip"
#cmake_download "E:/opencv-3.4.0/opencv-3.4.0/.cache/ippicv/8a7680ae352c192de2e2e34936164bd0-ippicv_2017u3_win_ia32_general_20170822.zip" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/dfe3162c237af211e98b8960018b564bc209261d/ippicv/ippicv_2017u3_win_ia32_general_20170822.zip"

可以看到文本中记录了下载链接,于是在浏览器中复制上述链接,自行下载好这几个文件到文本指向的路径中。 比如:我缺的三个文件是: opencv_ffmpeg.dll,需放到:E:/opencv-3.4.0/opencv-3.4.0/build/3rdparty/ffmpeg。 下载链接:https://raw.githubusercontent.com/opencv/opencv_3rdparty/66b1fed06cf3510235f367f96aa26da5cb234a15/ffmpeg/opencv_ffmpeg.dll opencv_ffmpeg_64.dll,需放到:E:/opencv-3.4.0/opencv-3.4.0/build/3rdparty/ffmpeg。 下载链接: https://raw.githubusercontent.com/opencv/opencv_3rdparty/66b1fed06cf3510235f367f96aa26da5cb234a15/ffmpeg/opencv_ffmpeg_64.dll ippicv_2017u3_win_ia32_general_20170822.zip,注意:需在压缩包前加上文件的hash值,即压缩名变为hash值-原名。提供一个在线查看哈希值的网站:http://www.atool.org/file_hash.php ,需要的是MD5 Hash。 需放到:E:/opencv-3.4.0/opencv-3.4.0/build/3rdparty/ippicv。(然而并没有生成ippicv文件夹) 下载链接: https://raw.githubusercontent.com/opencv/opencv_3rdparty/dfe3162c237af211e98b8960018b564bc209261d/ippicv/ippicv_2017u3_win_ia32_general_20170822.zip 建议科学上网后下载,不然网速感人。 不过还是不匹配。 根据大佬提示,CMake3.10.2没有downloader.cmake,干脆……不要这三个文件了…… 修改E:\opencv-3.4.0\opencv-3.4.0\3rdparty\ffmpeg中的ffmpeg.cmake,如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# Binary branch name: ffmpeg/master_20171009
# Binaries were created for OpenCV: 8ac2c5d620b467d3f22802e96c88ddde6da707af
set(FFMPEG_BINARIES_COMMIT "66b1fed06cf3510235f367f96aa26da5cb234a15")
set(FFMPEG_FILE_HASH_BIN32 "3ae76b105113d944984b2351c61e21c6")
set(FFMPEG_FILE_HASH_BIN64 "cf3bb5bc9d393b022ea7a42eb63e794d")
set(FFMPEG_FILE_HASH_CMAKE "ec59008da403fb18ab3c1ed66aed583b")

function(download_win_ffmpeg script_var)
  set(${script_var} "" PARENT_SCOPE)

  # set(ids BIN32 BIN64 CMAKE)
  # set(name_BIN32 "opencv_ffmpeg.dll")
  # set(name_BIN64 "opencv_ffmpeg_64.dll")
  # set(name_CMAKE "ffmpeg_version.cmake")

  # set(FFMPEG_DOWNLOAD_DIR "${OpenCV_BINARY_DIR}/3rdparty/ffmpeg")

  # set(status TRUE)
  # foreach(id ${ids})
    # ocv_download(FILENAME ${name_${id}}
               # HASH ${FFMPEG_FILE_HASH_${id}}
               # URL
                 # "$ENV{OPENCV_FFMPEG_URL}"
                 # "${OPENCV_FFMPEG_URL}"
                 # "https://raw.githubusercontent.com/opencv/opencv_3rdparty/${FFMPEG_BINARIES_COMMIT}/ffmpeg/"
               # DESTINATION_DIR ${FFMPEG_DOWNLOAD_DIR}
               # ID FFMPEG
               # RELATIVE_URL
               # STATUS res)
    # if(NOT res)
      # set(status FALSE)
    # endif()
  # endforeach()
  # if(status)
    # set(${script_var} "${FFMPEG_DOWNLOAD_DIR}/ffmpeg_version.cmake" PARENT_SCOPE)
  # endif()
endfunction()

修改E:\opencv-3.4.0\opencv-3.4.0\3rdparty\ippicv中的ippicv.cmake,如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
function(download_ippicv root_var)
  # set(${root_var} "" PARENT_SCOPE)

  # # Commit SHA in the opencv_3rdparty repo
  # set(IPPICV_COMMIT "dfe3162c237af211e98b8960018b564bc209261d")
  # # Define actual ICV versions
  # if(APPLE)
    # set(OPENCV_ICV_PLATFORM "macosx")
    # set(OPENCV_ICV_PACKAGE_SUBDIR "ippicv_mac")
    # if(X86_64)
      # set(OPENCV_ICV_NAME "ippicv_2017u3_mac_intel64_general_20170822.tgz")
      # set(OPENCV_ICV_HASH "c1ebb5dfa5b7f54b0c44e1917805a463")
    # else()
      # set(OPENCV_ICV_NAME "ippicv_2017u3_mac_ia32_general_20170822.tgz")
      # set(OPENCV_ICV_HASH "49b05a669042753ae75895a445ebd612")
    # endif()
  # elseif((UNIX AND NOT ANDROID) OR (UNIX AND ANDROID_ABI MATCHES "x86"))
    # set(OPENCV_ICV_PLATFORM "linux")
    # set(OPENCV_ICV_PACKAGE_SUBDIR "ippicv_lnx")
    # if(X86_64)
      # set(OPENCV_ICV_NAME "ippicv_2017u3_lnx_intel64_general_20170822.tgz")
      # set(OPENCV_ICV_HASH "4e0352ce96473837b1d671ce87f17359")
    # else()
      # set(OPENCV_ICV_NAME "ippicv_2017u3_lnx_ia32_general_20170822.tgz")
      # set(OPENCV_ICV_HASH "dcdb0ba4b123f240596db1840cd59a76")
    # endif()
  # elseif(WIN32 AND NOT ARM)
    # set(OPENCV_ICV_PLATFORM "windows")
    # set(OPENCV_ICV_PACKAGE_SUBDIR "ippicv_win")
    # if(X86_64)
      # set(OPENCV_ICV_NAME "ippicv_2017u3_win_intel64_general_20170822.zip")
      # set(OPENCV_ICV_HASH "0421e642bc7ad741a2236d3ec4190bdd")
    # else()
      # set(OPENCV_ICV_NAME "ippicv_2017u3_win_ia32_general_20170822.zip")
      # set(OPENCV_ICV_HASH "8a7680ae352c192de2e2e34936164bd0")
    # endif()
  # else()
    # return()
  # endif()

  # set(THE_ROOT "${OpenCV_BINARY_DIR}/3rdparty/ippicv")
  # ocv_download(FILENAME ${OPENCV_ICV_NAME}
               # HASH ${OPENCV_ICV_HASH}
               # URL
                 # "${OPENCV_IPPICV_URL}"
                 # "$ENV{OPENCV_IPPICV_URL}"
                 # "https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/"
               # DESTINATION_DIR "${THE_ROOT}"
               # ID IPPICV
               # STATUS res
               # UNPACK RELATIVE_URL)

  # if(res)
    # set(${root_var} "${THE_ROOT}/${OPENCV_ICV_PACKAGE_SUBDIR}" PARENT_SCOPE)
  # endif()
endfunction()

再重新Configure两次,Generate一次,成功。

用VS2013编译

打开OpenCV.sln编译,debug-Win32调试器。

添加到所需工程

根据法一: 添加环境变量: E:\opencv-3.4.0\opencv-3.4.0\build\install\x86\vc12\bin VS包含目录:E:\opencv-3.4.0\opencv-3.4.0\build\install\include E:\opencv-3.4.0\opencv-3.4.0\build\install\include\opencv E:\opencv-3.4.0\opencv-3.4.0\build\install\include\opencv2 库目录: E:\opencv-3.4.0\opencv-3.4.0\build\install\x86\vc12\lib 链接器: opencv_calib3d340d.lib opencv_core340d.lib opencv_dnn340d.lib opencv_features2d340d.lib opencv_flann340d.lib opencv_highgui340d.lib opencv_imgcodecs340d.lib opencv_imgproc340d.lib opencv_ml340d.lib opencv_objdetect340d.lib opencv_photo340d.lib opencv_shape340d.lib opencv_stitching340d.lib opencv_superres340d.lib opencv_video340d.lib opencv_videoio340d.lib opencv_videostab340d.lib

测试

比较两张图片的不同之处。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <cv.h>  
#include <highgui.h>  
#include <stdio.h>  

int main()
{
	IplImage *pSrc = cvLoadImage("1.jpg", 1);
	CvSize size = cvSize(600, 376);//区域大小  
	cvSetImageROI(pSrc, cvRect(0, 0, size.width, size.height));//设置源图像ROI  
	IplImage* pDest1 = cvCreateImage(size, pSrc->depth, pSrc->nChannels);//创建目标图像  
	cvCopy(pSrc, pDest1); //复制图像  
	cvResetImageROI(pDest1);//源图像用完后,清空ROI  
	cvSaveImage("Image_1.jpg", pDest1);//保存目标图像  
	cvSetImageROI(pSrc, cvRect(0, 393, size.width, size.height));//设置源图像ROI  
	IplImage* pDest2 = cvCreateImage(size, pSrc->depth, pSrc->nChannels);//创建目标图像  
	cvCopy(pSrc, pDest2); //复制图像  
	cvResetImageROI(pDest2);//源图像用完后,清空ROI  
	cvSaveImage("Image_2.jpg", pDest2);//保存目标图像  
	IplImage *dst;
	dst = cvCreateImage(cvGetSize(pDest1), pDest1->depth, pDest1->nChannels);
	cvAbsDiff(pDest1, pDest2, dst);
	cvNamedWindow("Compare_Images", 1);
	cvShowImage("Compare_Images", dst);
	cvWaitKey();
	return 0;

}

以上程序转自http://blog.csdn.net/cooelf/article/details/24663097

可成功编译和运行,到此,基础环境算是磕磕绊绊搭建好了。

Licensed under CC BY-NC-SA 4.0
最后更新于 0001-01-01 00:00 UTC
使用 Hugo 构建
主题 StackJimmy 设计