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
(110)
(54)
(54)
(47)
(45)
(36)
(30)
(29)
(24)
(24)
(22)
(21)
(21)
(20)
(19)
(17)
(16)
(16)
(15)
(14)
(12)
(12)
(12)
(12)
(12)
(12)
(11)
(10)
(10)
(10)
(10)
(10)
(9)
(9)
(8)
(8)
(8)
(8)
(7)
(7)
(6)
(6)
(6)
(6)
(6)
(5)
(5)
(5)
(5)
(4)
Author