美文网首页
swift4.2 中使用opencv实现照片比对相似度(1)

swift4.2 中使用opencv实现照片比对相似度(1)

作者: 小熊编程 | 来源:发表于2018-12-03 14:27 被阅读0次
    • 1.在OpenCV的官网(http://opencv.org)下载OpenCV之后,使用XCode新建工程,然后将下载下来的OpenCV库添加到工程中。- 在添加的过程中,如果顺序是点击XCode工程中的Build Phases,然后点击 Link Binary with Libraries中的+号,然后点击 Add other,找到下载好的OpenCV库加入的话,这时候虽然在工程会显示
      ld: framework not found opencv2
      clang: error: linker command failed with exit code 1 (use -v to see invocation),找不到OpenCV库,这时候在finder中找到打开工程的目录,会发现在finder中并没有将OpenCV库添加进来。
      ,原因是通过这种方式添加进来的默认是不拷贝到工程中的,所以在编译的时候会找不到库。
    • 可以将下载好的库,通过拖拽的方式添加到工程中,拖拽的时候选择拷贝即可。OpenCV库不需要依赖其余的库,所以不需要添加依赖库,也不需要进行其他的配置。
    • 2.将OpenCV所需的依赖库添加到项目中。

    libc++.tbd
    AVFoundation.framework
    CoreImage.framework
    CoreGraphics.framework
    QuartzCore.framework
    Accelerate.framework

    如果要使用摄像头做视频处理,还需要添加以下两个依赖库:

    CoreVideo.framework
    CoreMedia.framework
    AssetsLibrary.framework

    • 3.可能出现如下错误:
      Undefined symbols for architecture x86_64:
      "_jpeg_free_large", referenced from:
      _free_pool in opencv2(jmemmgr.o)
      "_jpeg_free_small", referenced from:
      _free_pool in opencv2(jmemmgr.o)
      _self_destruct in opencv2(jmemmgr.o)
      "_jpeg_get_large", referenced from:
      _alloc_large in opencv2(jmemmgr.o)
      _alloc_barray in opencv2(jmemmgr.o)
      "_jpeg_get_small", referenced from:
      _jinit_memory_mgr in opencv2(jmemmgr.o)
      _alloc_small in opencv2(jmemmgr.o)
      "_jpeg_mem_available", referenced from:
      _realize_virt_arrays in opencv2(jmemmgr.o)
      "_jpeg_mem_init", referenced from:
      _jinit_memory_mgr in opencv2(jmemmgr.o)
      "_jpeg_mem_term", referenced from:
      _jinit_memory_mgr in opencv2(jmemmgr.o)
      _self_destruct in opencv2(jmemmgr.o)
      "_jpeg_open_backing_store", referenced from:
      _realize_virt_arrays in opencv2(jmemmgr.o)
      ld: symbol(s) not found for architecture x86_64
      clang: error: linker command failed with exit code 1 (use -v to see invocation)

    解决办法:
    安装:libjpeg-turbo.dmg : https://sourceforge.net/projects/libjpeg-turbo/files/1.4.0/
    在终端运行:lipo -info /opt/libjpeg-turbo/lib/libjpeg.a 将会出现以下内容:
    Architectures in the fat file: /opt/libjpeg-turbo/lib/libjpeg.a are: i386 x86_64 armv6 armv7 armv7s arm64
    然后将/opt/libjpeg-turbo/lib/libjpeg.a 加到你的工程里面

    相关文章

      网友评论

          本文标题:swift4.2 中使用opencv实现照片比对相似度(1)

          本文链接:https://www.haomeiwen.com/subject/vweycqtx.html