Java OpenCV中怎么用KNN算法实现图像背景移除
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要讲解了"Java OpenCV中怎么用KNN算法实现图像背景移除",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Java OpenCV中怎么
千家信息网最后更新 2026年11月02日Java OpenCV中怎么用KNN算法实现图像背景移除
这篇文章主要讲解了"Java OpenCV中怎么用KNN算法实现图像背景移除",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Java OpenCV中怎么用KNN算法实现图像背景移除"吧!
实现步骤
1 获取视频
2 设置形态学结构
3 创建 Video.createBackgroundSubtractorKNN()
4 提取模型 BS
5 进行形态学变换
6 膨胀
7 二值化
8 展示结果
示例代码
package com.xu.opencv;import java.util.ArrayList;import java.util.List;import java.util.Objects;import java.util.Optional;import java.util.stream.Collectors;import org.opencv.core.Core;import org.opencv.core.Mat;import org.opencv.core.MatOfPoint;import org.opencv.core.Point;import org.opencv.core.Rect;import org.opencv.core.Size;import org.opencv.highgui.HighGui;import org.opencv.imgproc.Imgproc;import org.opencv.video.BackgroundSubtractorKNN;import org.opencv.video.Video;import org.opencv.videoio.VideoCapture;/** * @Title: BSM.java * @Package com.xu.opencv * @Description: OpenCV-4.1.0 背景消除 * @author: hyacinth * @date: 2019年7月19日 下午22:10:14 * @version: V-1.0 * @Copyright: 2019 hyacinth */public class BSM { static { System.loadLibrary(Core.NATIVE_LIBRARY_NAME); } public static void main(String[] args) { BSM_KNN(); } /** * OpenCV-4.1.0 视频分析和对象跟踪 背景消除 KNN * * @return: void * @date: 2019年7月19日 下午22:10:14 */ public static void BSM_KNN() { // 1 创建 VideoCapture 对象 VideoCapture capture = new VideoCapture(0); // 2 使用 VideoCapture 对象读取本地视频 capture.open("D:\\BaiduNetdiskDownload\\video_003.avi"); // 4 使用 Mat video 保存视频中的图像帧 针对每一帧 做处理 Mat video = new Mat(); // 3 设置结构元素 Mat kernel1 = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(1, 1), new Point(-1, -1)); Mat kernel2 = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(3, 3), new Point(-1, -1)); // 4 KNN 背景消除 BackgroundSubtractorKNN knn = Video.createBackgroundSubtractorKNN(); Mat bitmask = new Mat(); while (capture.read(video)) { // 5 提取模型 BSM knn.apply(video, bitmask, -1); // 6 形态学变换(闭操作) Imgproc.morphologyEx(bitmask, bitmask, Imgproc.MORPH_CLOSE, kernel1, new Point(-1, -1)); // 7 膨胀 Imgproc.dilate(bitmask, bitmask, kernel2, new Point(-1, -1), 1); // 8 二值化 Imgproc.threshold(bitmask, bitmask, 20, 255, Imgproc.THRESH_BINARY | Imgproc.THRESH_TRIANGLE); // 9 将原图中的背景设置为 Scalar(255, 255, 255) for (int i = 0, r = bitmask.rows(); i < r; i++) { for (int j = 0, c = bitmask.cols(); j < c; j++) { if (bitmask.get(i, j)[0] <= 150) { video.put(i, j, 255, 255, 255); } } } // 10 显示 HighGui.imshow("KNN 背景移除", video); int index = HighGui.waitKey(100); if (index == 27) { capture.release(); break; } } }}结果图
感谢各位的阅读,以上就是"Java OpenCV中怎么用KNN算法实现图像背景移除"的内容了,经过本文的学习后,相信大家对Java OpenCV中怎么用KNN算法实现图像背景移除这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
背景
图像
算法
视频
对象
形态
形态学
学习
内容
模型
结构
结果
变换
代码
元素
原图
就是
思路
情况
文章
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
腾讯阿里互联网科技
万易互联网科技
唐信互联网科技 大连
火传媒上海互联网科技
互联网金融监管科技
金融科技和互联网金融
互联网科技素材视频竖屏
来此购互联网科技有限公司
互联网还是高科技吗
996高科技互联网公司
天津腾达互联网科技有限公司
长沙茂晟互联网科技有限公司
伍佰万互联网科技怎么赚钱
互联网科技实习生岗位
互联网风格科技公司名称
保山互联网科技靠谱吗
北京互联网科技类企业分布
10位科技互联网大佬
上海互联网科技园景观
广州全民伙伴互联网科技有限公司
疫情对互联网科技公司影响
互联网科技开发公司
互联网科技视频
贷财互联网科技
联恩商钥互联网科技有限公司
科技大学互联网专业好不好
科技与互联网的利与弊
湖北码尼互联网科技有限公司电话
国大互联网教育科技有限公司工作
城市宝互联网科技有限公司