
OpenCV.jsを動かしてみる + デモ
2019-06-228 min read
目次
概要
OpenCV.jsを試してみました。
環境
OpenCV.js v4.1.0
OpenCV.jsのセットアップ
OpenCVをWasmにビルドします。
https://tech-blog.s-yoshiki.com/2018/09/544/
デモではこちらを拝借します。
https://docs.opencv.org/4.1.0/opencv.js
https://docs.opencv.org/4.1.0/opencv.js
サンプルソース
グレースケール
let src = cv.imread(srcCanvasId);
let dst = new cv.Mat();
cv.cvtColor(src, dst, cv.COLOR_RGBA2GRAY, 0);
cv.imshow(dstCanvasId, dst);
2値化
let src = cv.imread(srcCanvasId);
let dst = new cv.Mat();
let gray = new cv.Mat();
cv.cvtColor(src, gray, cv.COLOR_RGBA2GRAY, 0);
cv.threshold(gray, dst, 126, 255, 1);
cv.imshow(dstCanvasId, dst);
Cannyエッジ
let src = cv.imread(srcCanvasId);
let dst = new cv.Mat();
let gray = new cv.Mat();
cv.Canny(src, dst, 100, 200);
cv.imshow(dstCanvasId, dst);
輪郭抽出
let src = cv.imread(srcCanvasId);
let dst = cv.Mat.zeros(src.rows, src.cols, cv.CV_8UC3);
let contours = new cv.MatVector();
let hierarchy = new cv.Mat();
cv.cvtColor(src, src, cv.COLOR_RGBA2GRAY, 0);
cv.adaptiveThreshold(
src,
src,
200,
cv.ADAPTIVE_THRESH_GAUSSIAN_C,
cv.THRESH_BINARY,
3,
2,
);
cv.findContours(
src,
contours,
hierarchy,
cv.RETR_CCOMP,
cv.CHAIN_APPROX_SIMPLE,
);
for (let i = 0; i < contours.size(); ++i) {
let color = new cv.Scalar(
Math.round(Math.random() * 255),
Math.round(Math.random() * 255),
Math.round(Math.random() * 255),
);
cv.drawContours(dst, contours, i, color, 1, cv.LINE_8, hierarchy, 100);
}
cv.imshow(dstCanvasId, dst);
ガウシアン
let src = cv.imread(srcCanvasId);
let dst = new cv.Mat();
cv.cvtColor(src, src, cv.COLOR_RGBA2GRAY, 0);
cv.adaptiveThreshold(
src,
dst,
200,
cv.ADAPTIVE_THRESH_GAUSSIAN_C,
cv.THRESH_BINARY,
3,
2,
);
cv.imshow(dstCanvasId, dst);
デモ
Recommends
New Posts
Hot posts!
Date
Tags
Author