
OpenCV.jsを動かしてみる + デモ
2019-06-227 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!
Tags
Author