Java OpenCV中怎么用KNN算法实现图像背景移除
发表于:2024-11-18 作者:千家信息网编辑
千家信息网最后更新 2024年11月18日,这篇文章主要讲解了"Java OpenCV中怎么用KNN算法实现图像背景移除",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Java OpenCV中怎么
千家信息网最后更新 2024年11月18日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安全错误
数据库的锁怎样保障安全
幻塔换服务器奖励
nc数据库结构
微博社交关系数据库
360有没有网络安全课
应聘软件开发需要什么证书
泰拉瑞亚1.4怎么弄服务器
jsp连通数据库
美国政府报告文摘题录数据库
深圳大合网络技术
阿坝bim软件开发工程
excel批量数据库软件
阅读网络安全手抄报
服务器压力测试有啥用
软件开发趋势
山东济南质量好的存储服务器
国家制定了网络安全法了
国家安全日网络安全问答
青岛白菜软件开发有限公司
北京一七网络技术有限地址
中文数据库怎么下载文件
网络安全工作周报
怎么取消服务器管理员密码
津南区项目网络技术不二之选
湖北语音网络技术价目表
房山ibm服务器回收价目表
信息及网络安全面试试卷
我的世界粘土云服务器进不去
我要看视频网络安全手抄报
杭州趣活网络技术有限公司
数据库排名对比