如何在网络浏览器中创建二进制手罩?-打开CV



我正试图在本文的基础上创建一个二进制手罩:https://medium.com/@muehler.v/简单手势-认知-使用-opencv和-javascript-eb3d6ced28a0

但我使用了一个新版本的OpenCV,它被编译为用于web浏览器的JavaScript。在我的OpenCV版本中,cv.Vvector不存在。我不知道如何替换cv.Vector函数。我一直在尝试重写函数skinColorUpperskinColorLower。然而,效果并不令人满意。如何正确编写这些函数?

const canvasInput = document.getElementById("canvasInput");
const canvasOutput = document.getElementById("canvasOutput");
const skinColorUpper = (hue) => new cv.Mat(1, 1, cv.CV_8UC4,new cv.Scalar(hue,0.8 * 255, 0.6 * 255));
const skinColorLower = (hue) => new cv.Mat(1, 1, cv.CV_8UC4,new cv.Scalar(hue,0.1 * 255, 0.05 * 255));
const img = cv.imread(canvasInput);
cv.cvtColor( img, imgHLS, cv.COLOR_BGR2HLS);
const rangeMask = new cv.Mat();
const up = skinColorUpper(15);
const low = skinColorLower(0);
cv.inRange(imgHLS, low, up, rangeMask);
cv.imshow(canvasOutput, rangeMask);

输入:输入图像

HLS:HLS图像

输出:输出掩码

function openCvReady() {
cv['onRuntimeInitialized']=()=> {
let src = cv.imread('canvasInput');
let hls = new cv.Mat();
cv.cvtColor(src, hls, cv.COLOR_BGR2HLS);
let low = new cv.Mat(hls.rows, hls.cols, hls.type(), [0, 0.1 * 255, 0.05 * 255, 0]);
let high = new cv.Mat(hls.rows, hls.cols, hls.type(), [15, 0.8 * 255, 0.6 * 255, 255]);
let dst = new cv.Mat();
cv.inRange(hls, low, high, dst);
cv.imshow('canvasOutput', dst);
};
}

看看Github上的这里。

最新更新