iOS,Android,Go,openCV

栏目: IOS · 发布时间: 7年前

内容简介:先说:最近准备做基于openCV的移动端人脸对比和识别,所以记录一下在过程中遇到的问题和解决办法,还有一些感想,文章随时更新,有问题希望大家可以多沟通交流一写markdown上的不兼容,看着不习惯可以去

先说:最近准备做基于openCV的移动端人脸对比和识别,所以记录一下在过程中遇到的问题和解决办法,还有一些感想,文章随时更新,有问题希望大家可以多沟通交流

一写markdown上的不兼容,看着不习惯可以去 原文链接

1 选择&安装配置

1.1 首先 Go 的OpenVC两个版本的库

OpenCV2+

OpenCV3+

1.2 安装OpenCV(OpenCV3+)

依赖很多,安装时间很长,请准备好瓜子和板凳,直待GoCV安装完成

brew install hybridgroup/tools/opencv

运行以下命令获取GoCV库

go get -u -d gocv.io/x/gocv

切换到gocv文件夹下

cd $GOPATH/src/gocv.io/x/gocv

运行go run XX.go 选其中一个demo文件运行即可

1.2.1 But!! 你可能会遇到一个报错

go run: cannot run *_test.go files (video_test.go)

pkg-config --cflags -- opencv4
Package opencv4 was not found in the pkg-config search path. Perhaps you should add the directory containing `opencv4.pc' to the PKG_CONFIG_PATH environment variable No package 'opencv4' found pkg-config: exit status 1

你可以通过 brew install pkgconfig 解决

1.2.2 你还可能遇到Library not loaded

dyld: Library not loaded:glog啊或者gflags啊之类的

总之缺什么库啊引用缺失啊 ,你就导入什么就好了 brew install glog

1.2.3 运行成功

运行

cd $GOPATH/src/gocv.io/x/gocv
go run ./cmd/version/main.go

成功->输出

gocv version: 0.18.0
opencv lib version: 4.0.0

2 运行Demo

2.1 面部检测Demo 直接用goCV的Demo就好了,搞起来

<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="go" contenteditable="false" cid="n166" mdtype="fences" style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-indent: 0px; text-transform: none; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none; box-sizing: border-box; overflow: visible; font-family: Monaco, Consolas, "Andale Mono", "DejaVu Sans Mono", monospace; margin-top: 0px; margin-bottom: 20px; background-image: inherit; background-size: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(54, 59, 64); font-size: 0.9rem; display: block; break-inside: avoid; text-align: left; white-space: normal; padding: 10px 30px; border: 1px solid; width: inherit; caret-color: rgb(184, 191, 198); color: rgb(184, 191, 198); position: relative !important;">import(

"fmt"

"image/color"

"gocv.io/x/gocv"

)

funcmain() {

// set to use a video capture device 0

deviceID:=0

// open webcam

webcam, err:=gocv.OpenVideoCapture(deviceID)

iferr!=nil{

fmt.Println(err)

return

}

deferwebcam.Close()

// open display window

window:=gocv.NewWindow("Face Detect")

deferwindow.Close()

// prepare image matrix

img:=gocv.NewMat()

deferimg.Close()

// color for the rect when faces detected

blue:=color.RGBA{0, 0, 255, 0}

// load classifier to recognize faces

classifier:=gocv.NewCascadeClassifier()

deferclassifier.Close()

if!classifier.Load("data/haarcascade_frontalface_default.xml") {

fmt.Println("Error reading cascade file: data/haarcascade_frontalface_default.xml")

return

}

fmt.Printf("start reading camera device: %v\n", deviceID)

for{

ifok:=webcam.Read(&img); !ok{

fmt.Printf("cannot read device %v\n", deviceID)

return

}

ifimg.Empty() {

continue

}

// detect faces

rects:=classifier.DetectMultiScale(img)

fmt.Printf("found %d faces\n", len(rects))

// draw a rectangle around each face on the original image

for_, r:=rangerects{

gocv.Rectangle(&img, r, blue, 3)

}

// show the image in the window, and wait 1 millisecond

window.IMShow(img)

window.WaitKey(1)

}

}</pre>

2.1.1 But!!!! 你可能会遇到报错

Error reading cascade file: data/haarcascade_frontalface_default.xml 路径不对,问题代码行数 if !classifier.Load("data/haarcascade_frontalface_default.xml") { 替换load路径为你的opencv的路径$GOPATH/src/gocv.io/x/gocv/data/haarcascade_frontalface_default.xml

3.打包go文件为静态.a包

安装gomobile go get golang.org/x/mobile/cmd/gomobile 需要翻墙

然后安装 gomobile init 绑定 go get -d golang.org/x/mobile/example/bind/...

最后生成gomobile的生成.a的测试包helpDemo,以iOS为例子

cd $GOPATH/src/golang.org/x/mobile/example/bind

gomobile bind -target=ios golang.org/x/mobile/example/bind/hello 因为gomobile在生成.framework时,调用了CommandLineTools,所以你需要在MacOS上安装CommandLineTools,或者Xcode

But!!!!!即使你安装了CommandLineTools或者Xcode也还是会有可能会报出 gomobile: -target=ios requires XCode 的错误,我理解[图片上传失败...(image-81b24c-1544679956585)]

是因为gomobile实现的xcrun找不到你的CommandLineTools,路径错误,解决:

sudo xcode-select -r

xcode-select --help

Options:
-h, --help print this help message and exit
-p, --print-path print the path of the active developer directory
-s <path>, --switch <path> set the path for the active developer directory
--install open a dialog for installation of the command line developer tools
-v, --version print the xcode-select version
-r, --reset reset to the default command line tools path

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Design Accessible Web Sites

Design Accessible Web Sites

Jeremy Sydik / Pragmatic Bookshelf / 2007-11-05 / USD 34.95

It's not a one-browser web anymore. You need to reach audiences that use cell phones, PDAs, game consoles, or other "alternative" browsers, as well as users with disabilities. Legal requirements for a......一起来看看 《Design Accessible Web Sites》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码