Java OpenCV中怎么用KNN算法实现图像背景移除(java,knn,opencv,开发技术)

时间:2024-05-09 18:31:56 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

实现步骤

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;}}}}

结果图

Java OpenCV中怎么用KNN算法实现图像背景移除

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:Java OpenCV中怎么用KNN算法实现图像背景移除的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:Linux查看用户组的具体方法是什么下一篇:

5 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18