我想改进我的 opencv.js 项目的前景提取。我正在从静态背景中提取移动前景。我的输出前景有间隙并且有点嘈杂。我怎样才能用原始的前景对象颜色填补这个空白?
输入
输出
这是我的代码:
let video = document.getElementById('videoInput');
let cap = new cv.VideoCapture(video);
let frame = new cv.Mat(video.height, video.width, cv.CV_8UC4);
let fgmask = new cv.Mat(video.height, video.width, cv.CV_8UC1);
let fgbg = new cv.BackgroundSubtractorMOG2(500, 16, false);
const FPS = 30;
function processVideo() {
try {
if (!streaming) {
// clean and stop.
frame.delete(); fgmask.delete(); fgbg.delete();
return;
}
let begin = Date.now();
// start processing.
cap.read(frame);
fgbg.apply(frame, fgmask);
frame.copyTo(fgmask, fgmask)
cv.imshow('canvasOutput', fgmask);
// schedule the next one.
let delay = 1000/FPS - (Date.now() - begin);
setTimeout(processVideo, delay);
} catch (err) {
utils.printError(err);
}
};
// schedule the first one.
setTimeout(processVideo, 0);
最佳答案
对最终图像先腐 eclipse 再膨胀,调整内核大小和迭代次数以获得最佳结果
内核 = np.ones((5,5),np.uint8)
侵 eclipse = cv.erode(img,kernel,iterations = 1)
膨胀 = cv.dilate(img,kernel,iterations = 1)
关于opencv - 我怎样才能填补空白并改善前景提取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48809225/