Java OpenCV中怎么用KNN算法实现图像背景移除
导读:本文共1490字符,通常情况下阅读需要5分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 实现步骤1 获取视频2 设置形态学结构3 创建 Video.createBackgroundSubtractorKNN()4 提取模型 BS5 进行形态学变换6 膨胀7 二值化8 展示结果示例代码packagecom.xu.opencv;importjava.util.ArrayList;importjava.util.List;importjava.u... ...
音频解说
目录
(为您整理了一些要点),点击可以直达。实现步骤
1 获取视频
2 设置形态学结构
3 创建 Video.createBackgroundSubtractorKNN()
4 提取模型 BS
5 进行形态学变换
6 膨胀
7 二值化
8 展示结果
示例代码
packagecom.xu.opencv;importjava.util.ArrayList;importjava.util.List;importjava.util.Objects;importjava.util.Optional;importjava.util.stream.Collectors;importorg.opencv.core.Core;importorg.opencv.core.Mat;importorg.opencv.core.MatOfPoint;importorg.opencv.core.Point;importorg.opencv.core.Rect;importorg.opencv.core.Size;importorg.opencv.highgui.HighGui;importorg.opencv.imgproc.Imgproc;importorg.opencv.video.BackgroundSubtractorKNN;importorg.opencv.video.Video;importorg.opencv.videoio.VideoCapture;/***@Title:BSM.java*@Packagecom.xu.opencv*@Description:OpenCV-4.1.0背景消除*@author:hyacinth*@date:2023年7月19日下午22:10:14*@version:V-1.0*@Copyright:2019hyacinth*/publicclassBSM{static{System.loadLibrary(Core.NATIVE_LIBRARY_NAME);}publicstaticvoidmain(String[]args){BSM_KNN();}/***OpenCV-4.1.0视频分析和对象跟踪背景消除KNN**@return:void*@date:2023年7月19日下午22:10:14*/publicstaticvoidBSM_KNN(){//1创建VideoCapture对象VideoCapturecapture=newVideoCapture(0);//2使用VideoCapture对象读取本地视频capture.open("D:\\BaiduNetdiskDownload\\video_003.avi");//4使用Matvideo保存视频中的图像帧针对每一帧做处理Matvideo=newMat();//3设置结构元素Matkernel1=Imgproc.getStructuringElement(Imgproc.MORPH_RECT,newSize(1,1),newPoint(-1,-1));Matkernel2=Imgproc.getStructuringElement(Imgproc.MORPH_RECT,newSize(3,3),newPoint(-1,-1));//4KNN背景消除BackgroundSubtractorKNNknn=Video.createBackgroundSubtractorKNN();Matbitmask=newMat();while(capture.read(video)){//5提取模型BSMknn.apply(video,bitmask,-1);//6形态学变换(闭操作)Imgproc.morphologyEx(bitmask,bitmask,Imgproc.MORPH_CLOSE,kernel1,newPoint(-1,-1));//7膨胀Imgproc.dilate(bitmask,bitmask,kernel2,newPoint(-1,-1),1);//8二值化Imgproc.threshold(bitmask,bitmask,20,255,Imgproc.THRESH_BINARY|Imgproc.THRESH_TRIANGLE);//9将原图中的背景设置为Scalar(255,255,255)for(inti=0,r=bitmask.rows();i<r;i++){for(intj=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);intindex=HighGui.waitKey(100);if(index==27){capture.release();break;}}}}
结果图
</div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:
Java OpenCV中怎么用KNN算法实现图像背景移除的详细内容,希望对您有所帮助,信息来源于网络。