最近做了几个测试, Segment Anything在工业上做些简单的预处理分割效果是很不错的,而且通过点输入提示,由于工业上拍摄的东西一般位置相对固定,因此可以有广泛的应用. 比如在分割一个轮廓模糊的区域,
用halcon 一般需要使用动态阈值等等处理,还需要做图像的灰度的非线性变化等提高对比度,这些操作其实都可以使用SAM自动化完成
Halcon处理
设置多个参数
SAM处理
这样对比下来,如果SAM可以提供C++的部署方案的化,其实可以将分割这个工作量大大降低,最重要的是: 无需调整参数 使用Halcon的化,当图像亮度或者其它条件变化时,需要调整参数的.
实施
1 C++ 源码
GitHub - dinglufe/segment-anything-cpp-wrapper 这里作者给出了实现方式
2 安装
作者提供了vcpkg的安装方式
./vcpkg install opencv:x64-windows gflags:x64-windows onnxruntime-gpu:x64-windows
但是这个比较麻烦,原因是在git clone 第三方库 时需要设置HTTPS的代理,我电脑只能设置HTTP,因此就放弃了,看了下需要的几个库:
OpenCV : 这个电脑上有(这个不知道怎么弄的就不要看了)
: 这个没有,看了下时Google用来代码调试的,后来归微软了,那么在windows下面很好配置
onnxruntime:这个也有(没有的自己百度网上一大堆,这个也不用安装,跟OpenCV一样直接用 我的是1.14.1)
然后后面就是CMAKE一下.于是就自己装一下gflags
gflags安装:
首先下载https://github.com/gflags/gflags
下载完成后,不能直接用,需要先CAMKE 一下,Windows上用CMAKE GUI就可以
这是下载解压后的目录:
这是CMAKE 以后的创建的编译结果文件夹mybuild
这是编译的结果 include lib x64 才是最终需要的.
安装完成之后,直接进入到F:\segment-anything-cpp-wrapper-1.4.1
新建build文件夹,用来存放项目编译结果
我的配置如下:
点击 Condifgure 进行配置,我选的是 VS2019 X64 ,你自己的需要根据OpenCV 版本.
点击Condifgure 之后会报错,提示OpenCV 没有配置,然后点击选择路径,再次Configure
然后提示gflags 没有配置, 也是一样的操作,最后都没有问题了 提示 configure complete ,然后点击
Generate, 再点Open Project
关键来了
这里需要onnxruntime的配置,原项目是配置到了根目录下,这里你需要根据实际的路径
仅需要配置 sam_cpp_lib这个项目就可以了
重新编译,指导全部成功
设置sam_cpp_test为启动项目
下载
将他放到和exe目录下
技术交流: 13361204270