## Build OpenCV,js
### 安装Emscripten
<https://kripken.github.io/emscripten-site/docs/getting_started/downloads.html>
git clone https://github.com/juj/emsdk.git
cd emsdk
git pull#本来教程使用emsdk update,但是报错提示使用git pull
./emsdk install latest #安装时下载报错,应该是ssl报错,可用wget --no-cookie --no-check-certificate url 解决,再将文件放入所要求的地发(终端报错处显示),不过我使用迅雷下载也解决了问题
./emsdk activate latest
source ./emsdk_env.sh
此外,emsdk不提供任何工具,我们还要自己安装如python node.js CMake Java
sudo apt-get install python2.7
sudo apt-get install nodejs
sudo apt-get install cmake
sudo apt-get install default-jre
### 或手动安装Emscripten
mkdir myfastcomp
cd myfastcomp
git clone https://github.com/kripken/emscripten-fastcomp
cd emscripten-fastcomp
git clone https://github.com/kripken/emscripten-fastcomp-clang tools/clang
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD="host;JSBackend" -DLLVM_INCLUDE_EXAMPLES=OFF -DLLVM_INCLUDE_TESTS=OFF -DCLANG_INCLUDE_TESTS=OFF
LLVM_ROOT='/home/ubuntu/yourpath/emscripten-fastcomp/build/bin'
### 构建opencv
git clone https://github.com/opencv/opencv.git
cd opencv
python ./platforms/js/build_js.py build_js
![](imgs/20180809-175353.png)
ccache官网http://ccache.samba.org下载ccache
1.解压缩 tar -zxvf ccache
2.进入ccache目录,./configure然后make再make install
3.安装成功
### 第二次尝试,不使用git安装,使用系统自带安装emscripten
因为有如下问题
![](imgs/20180813-091759.png)![](imgs/20180813-091813.png)
尝试其他方法,系统apt安装
sudo apt install emscripten
以上两个问题仍为解决,跳过
## demo
具体函数太多,各参数意思请参考<https://docs.opencv.org/3.3.1/d5/d10/tutorial_js_root.html>
注1 :我的demo的命名方法,
![](imgs/20180813-102549.png)
对应于上图章节
注2:demo中**script src**设置为`<script src="/home/db/opencvjs/opencv-3.4.2/build_js/bin/opencv.js" type="text/javascript"></script>`要求html文件其必须存在于这个路径的某一节下,比如我就存在文件夹opencvjs下,而不能在其他地方,或者在其中另建一个文件夹作整理。否则会不能正常加载`opencv.js`
###
### image processing
1.得到灰度图像(demo:1_1.html)
cv.cvtColor (src, dst, code, dstCn = 0)
2.对图像进行二值化(demo:3_1.html)
cv.inRange (src, lowerb, upperb, dst)
3.对图像重新改变大小(demo:3_2_1.html)由于没有设置画布大小进行适应性设置,所以图像大小改变的不彻底,实属正常。
let dsize = new cv.Size(300, 300);
cv.resize(src, dst, dsize, 0, 0, cv.INTER_AREA);
![](imgs/20180813-095025.png)
如图,只将图像行变为300,列受限于canvas,并没有改变
4.将图像移动,M代表位移的方向如`let M = cv.matFromArray(2, 3, cv.CV_64FC1, [1, 0, 50, 0, 1, 100]);`代表将图像向右50,向下100像素(demo:3_2_2.html)
cv.warpAffine (src, dst, M, dsize, flags = cv.INTER_LINEAR, borderMode = cv.BORDER_CONSTANT, borderValue = new cv.Scalar())
但是结果如图不知道为什么列的大小被改变了,怀疑他的bordervalue提取有问题**待解决**
![](imgs/20180813-100647.png)
5.旋转(demo:3_2_3.html)
let center = new cv.Point(src.cols / 2, src.rows / 2);
let M = cv.getRotationMatrix2D(center, 45, 1);
cv.warpAffine(src, dst, M, dsize, cv.INTER_LINEAR, cv.BORDER_CONSTANT, new cv.Scalar());
6.Perspective Transformation(demo:3_2_4.html)
对于这个变换,我理解为对视角的转换
cv.warpPerspective (src, dst, M, dsize, flags = cv.INTER_LINEAR, borderMode = cv.BORDER_CONSTANT, borderValue = new cv.Scalar())
7.Image Thresholding(阙值化处理)
单一阙值demo:3_3_1.html
//thresh threshold value.
//maxval maximum value to use with the cv.THRESH_BINARY and cv.THRESH_BINARY_INV thresholding types.
cv.threshold (src, dst, thresh, maxval, type)
自适应阙值demo:3_3_2.html
cv.adaptiveThreshold (src, dst, maxValue, adaptiveMethod, thresholdType, blockSize, C)
//adaptiveMethod - It decides how thresholding value is calculated:
//cv.ADAPTIVE_THRESH_MEAN_C
// cv.ADAPTIVE_THRESH_GAUSSIAN_C
8.Smoothing Images
2D卷积图像滤波demo:3_4_1.html
cv.filter2D (src, dst, ddepth, kernel, anchor = new cv.Point(-1, -1), delta = 0, borderType = cv.BORDER_DEFAULT)
图像模糊demo:3_4_2.html
四种方式,只demo一种(a)
a 平均
let ksize = new cv.Size(3, 3);
let anchor = new cv.Point(-1, -1);
cv.blur(src, dst, ksize, anchor, cv.BORDER_DEFAULT);
b 高斯模糊
let ksize = new cv.Size(3, 3);
cv.GaussianBlur(src, dst, ksize, 0, 0, cv.BORDER_DEFAULT);
c 中值模糊模糊
cv.medianBlur(src, dst, 5);
d 双边滤波
cv.cvtColor(src, src, cv.COLOR_RGBA2RGB, 0);
cv.bilateralFilter(src, dst, 9, 75, 75, cv.BORDER_DEFAULT);
9.形态转换demo: 3_5_1.html
多种函数多种方式可选,同样只demo其中一个a
a 侵蚀
边界附近的所有像素都会被丢弃,这取决于内核的大小,它对于去除小的白色噪音,分离两个连接的物体等都很有用`function: cv.erode (src, dst, kernel, anchor = new cv.Point(-1, -1), iterations = 1, borderType = cv.BORDER_CONSTANT, borderValue = cv.morphologyDefaultBorderValue())`
let M = cv.Mat.ones(5, 5, cv.CV_8U);
let anchor = new cv.Point(-1, -1);
cv.erode(src, dst, M, anchor, 1, cv.BORDER_CONSTANT, cv.morphologyDefaultBorderValue());
b 扩张
与a原理相反,侵蚀消除了白色的噪音,但它也缩小了物体。所以扩张。因为噪音消失了,它们不会回来,但是物体面积增加了。它在连接物体的破碎部分时也很有用
let M = cv.Mat.ones(5, 5, cv.CV_8U);
let anchor = new cv.Point(-1, -1);
cv.dilate(src, dst, M, anchor, 1, cv.BORDER_CONSTANT, cv.morphologyDefaultBorderValue());
c opening
`function: cv.morphologyEx (src, dst, op, kernel, anchor = new cv.Point(-1, -1), iterations = 1, borderType = cv.BORDER_CONSTANT, borderValue = cv.morphologyDefaultBorderValue())`a、b的另一种名称,用于去噪
其中使用op=cv.MORPH_OPEN
d closing
c的逆,只需要改cv.morphologyEx 调用的参数op即可,
cv.morphologyEx(src, dst, cv.MORPH_CLOSE, M);
e Morphological Gradient
这个去燥与上面不同好像是提取了边界一样,
let M = cv.Mat.ones(5, 5, cv.CV_8U);
cv.morphologyEx(src, dst, cv.MORPH_GRADIENT, M);
如图
![](imgs/20180813-164437.png)
f Top Hat
let M = cv.Mat.ones(9, 9, cv.CV_8U);
cv.morphologyEx(src, dst, cv.MORPH_TOPHAT, M);
g black hat
let M = cv.Mat.ones(53, 53, cv.CV_8U);
cv.morphologyEx(src, dst, cv.MORPH_BLACKHAT, M);
h
使用`function: cv.getStructuringElement (shape, ksize, anchor = new cv.Point(-1, -1))`
10.图像梯度
a Sobel and Scharr Derivatives demo:3_6.html
`cv.Sobel (src, dst, ddepth, dx, dy, ksize = 3, scale = 1, delta = 0, borderType = cv.BORDER_DEFAULT)`
`cv.Scharr (src, dst, ddepth, dx, dy, scale = 1, delta = 0, borderType = cv.BORDER_DEFAULT)`
b Laplacian 滤波
使用`cv.Laplacian (src, dst, ddepth, ksize = 1, scale = 1, delta = 0, borderType = cv.BORDER_DEFAULT)`
cv.cvtColor(src, src, cv.COLOR_RGB2GRAY, 0);
cv.Laplacian(src, dst, cv.CV_8U, 1, 1, 0, cv.BORDER_DEFAULT);
c 注意
cv.Sobel(src, dstx, cv.CV_8U, 1, 0, 3, 1, 0, cv.BORDER_DEFAULT);
cv.Sobel(src, absDstx, cv.CV_64F, 1, 0, 3, 1, 0, cv.BORDER_DEFAULT);
如上使用不同的数据格式会有更好的结果,因为使用`CV_8U`会使某些负斜率为0,检测不到某些结果
![](imgs/20180813-170650.png)
11.边界提取(demo:3_7.html)
原理不再赘述,大致为去噪,计算梯度,选择局部最大梯度。实现这一效果使用`fu
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
中科院软件所智能软件中心实习生社区_HTML_Python_下载.zip (259个子文件)
droid_cpp_template.cpp 2KB
TensorRT试用总结.docx 1.59MB
w2.gif 212KB
.gitignore 2KB
4_1.html 3KB
3_11.html 3KB
2_2.html 3KB
3_15.html 3KB
5_1.html 3KB
3_12.html 3KB
3_9_5.html 2KB
1_3.html 2KB
3_9_3.html 2KB
3_9_2.html 2KB
3_10_1.html 2KB
3_9_4.html 2KB
3_16.html 2KB
3_9_6.html 2KB
3_13.html 2KB
3_9_1.html 2KB
3_2_4.html 2KB
3_6.html 2KB
3_14.html 2KB
3_10_2.html 2KB
3_2_3.html 2KB
3_2_2.html 2KB
3_1.html 2KB
3_4_2.html 2KB
3_5_1.html 2KB
3_4_1.html 2KB
3_5_2.html 2KB
3_3_2.html 2KB
2_1.html 1KB
3_7.html 1KB
3_2_1.html 1KB
3_8.html 1KB
3_3_1.html 1KB
1_1.html 1KB
baoman1.jpg 835KB
roswiki7.jpg 455KB
webwxgetmsgimg.jpg 224KB
client4.jpg 175KB
client5.jpg 143KB
client1.jpg 141KB
client2.jpg 136KB
client3.jpg 131KB
client6.jpg 130KB
yolo15.jpg 54KB
LICENSE 20KB
Makefile 88B
linux-checklist.md 65KB
open-internships.md 34KB
ros-checklist.md 29KB
survey阅读笔记:关系归纳偏差+深度学习+图网络.md 22KB
bunbun.md 14KB
YOLO-in-Android.md 13KB
readme.md 13KB
Xbot摄像头直播环境搭建.md 12KB
readme.md 11KB
skills.md 10KB
搭建Nginx流媒体服务器并使用ffmpeg进行推流.md 10KB
ROS-server-android-comm-testing-report.md 9KB
outstanding-interns.md 8KB
git-checklist.md 8KB
mace.md 8KB
how-do-we-rank-interns.md 7KB
capability-checklist.md 7KB
How RosWiki Works.md 7KB
Android集成科大讯飞语音合成服务.md 7KB
ROS-package-coding-specification.md 7KB
MycroftAI调研报告.md 6KB
GraphTransformTool.md.md 6KB
python-checklist.md 6KB
slack.md 5KB
Report-of-CNNdroid.md 5KB
Report of MoRo test.md 5KB
deepcompression_papernote.md 5KB
README.md 4KB
零基础使用qemu模拟器搭建arm.md 4KB
so-you-want-to-join-us.md 4KB
iterative_pruning.md 4KB
how-do-we-interview-interns.md 3KB
xbot_head运行流程.md 3KB
Report-of-cuDNN-Installation.md 3KB
company-code-open-source-guidelines.md 3KB
README.MD 3KB
ros-deb-packaging.md 2KB
markdown-checklist.md 2KB
reports.md 2KB
github.md 2KB
git.md 2KB
how-to-write-a-README-for-project.md 2KB
Report-of-ScanNet.md 1KB
How-to-automatically-add-file-header-in-the-IDE.md 478B
argots.md 357B
dl-model-compression.md 259B
asr04-cdhmm-handout.pdf 1.11MB
The Application of Hidden Markov Models in Speech Recognition.pdf 617KB
PocketSphinx语音识别系统语言模型的训练和声学模型的改进.pdf 589KB
RISC-V调研报告.pdf 501KB
共 259 条
- 1
- 2
- 3
资源评论
快撑死的鱼
- 粉丝: 1w+
- 资源: 9149
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Chart.js 的 Vue.js 包装器.zip
- BootstrapVue 为 Vue.js 提供了最全面的 Bootstrap v4 实现之一 具有广泛且自动化的 WAI-ARIA 可访问性标记 .zip
- Babel , Vue JSX 相关软件包的 monorepo.zip
- Java多线程基础学习指南:原理、实现与实战
- 西电微机原理实验:实验内容、步骤与实践指导 - 计算机科学与技术专业的教学辅助材料
- adminLTE 到 vuejs v2.x 转换项目.zip
- unity场景设置,unity入门编程
- Visual Basic 注册表类模块源码
- Android游戏开发之旅中文最新版本
- Androidmakefile编译系统Android.mk文件语法规范中文最新版本
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功