iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > Python >JavaOpenCV利用KNN算法实现图像背景移除
  • 471
分享到

JavaOpenCV利用KNN算法实现图像背景移除

2024-04-02 19:04:59 471人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录实现步骤示例代码结果图实现步骤 1 获取视频 2 设置形态学结构 3 创建 Video.createBackgroundSubtractorKNN() 4 提取模型 BS 5 进

实现步骤

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;


public class BSM {

    static {
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
    }

    public static void main(String[] args) {
        BSM_KNN();
    }

    
    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算法实现图像背景移除的文章就介绍到这了,更多相关OpenCV图像背景移除内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: JavaOpenCV利用KNN算法实现图像背景移除

本文链接: https://www.lsjlt.com/news/137960.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JavaOpenCV利用KNN算法实现图像背景移除
    目录实现步骤示例代码结果图实现步骤 1 获取视频 2 设置形态学结构 3 创建 Video.createBackgroundSubtractorKNN() 4 提取模型 BS 5 进...
    99+
    2024-04-02
  • Java OpenCV中怎么用KNN算法实现图像背景移除
    这篇文章主要讲解了“Java OpenCV中怎么用KNN算法实现图像背景移除”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java OpenCV中怎么用KNN算法实现图像...
    99+
    2023-06-29
  • Python实现图片背景移除工具
    上传一张图片,实现其背景移除的功能。 代码示例: import streamlit as st from rembg import remove from PIL import Im...
    99+
    2023-02-27
    Python图片背景移除工具 Python图片背景移除 Python背景移除
  • 利用CSS实现背景图像的平铺效果
    利用CSS实现背景图像的平铺效果在网页设计中,背景图像的平铺效果是常见的设计需求。通过CSS可以轻松地实现背景图像的平铺效果,本文将介绍一些常用的实现方法,并附上具体的代码示例。一、重复平铺(repeat)最简单的背景图像平铺方式是通过re...
    99+
    2023-11-21
    CSS 背景图像 平铺
  • Python如何实现图片背景移除工具
    这篇文章主要讲解了“Python如何实现图片背景移除工具”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python如何实现图片背景移除工具”吧!上传一张图片,实现其背景移除的功能。代码示例:...
    99+
    2023-07-05
  • 利用Python中​Rembg库实现去除图片背景
    目录安装快速上手命令行调用在Python中使用Python 的 Rembg 库可以去掉图片中的背景,效果如下: 安装 CPU版 pip install rembg  GP...
    99+
    2024-04-02
  • Python抠图:使用OpenCV实现背景去除
    一、了解抠图和OpenCV库 抠图(Matting)是图像处理领域的重要任务之一,旨在将对象与其它部分分离。OpenCV是一个开源计算机视觉库,它提供了丰富的函数和工具进行图像编辑处理,可以简单而快速地实现抠图功能,同时可以进行更多的图像处...
    99+
    2023-09-28
    python opencv 开发语言
  • Python基于纹理背景和聚类算法实现图像分割详解
    目录一.基于纹理背景的图像分割二.基于K-Means聚类算法的区域分割三.总结一.基于纹理背景的图像分割 该部分主要讲解基于图像纹理信息(颜色)、边界信息(反差)和背景信息的图像分割...
    99+
    2023-01-03
    Python 纹理 图像分割 Python 聚类算法 图像分割 Python图像分割
  • 利用Flutter实现背景图片毛玻璃效果实例
    目录前言使用 canvas 绘制图片更改绘制图片的绘制范围毛玻璃效果实现总结前言 继续我们绘图相关篇章,这次我们来看看如何使用 CustomPaint 实现毛玻璃背景图效果。毛玻璃背...
    99+
    2024-04-02
  • 如何使用CSS cross-fade()实现背景图像半透明效果
    这篇文章主要介绍如何使用CSS cross-fade()实现背景图像半透明效果,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、需求描述某元素,希望 background-image 背景图片是半透明的,但是,元素里...
    99+
    2023-06-08
  • css样式中背景图片备用色实现方法
    本篇内容主要讲解“css样式中背景图片备用色实现方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“css样式中背景图片备用色实现方法”吧! ...
    99+
    2024-04-02
  • Python基于均值漂移算法和分水岭算法实现图像分割
    目录一.基于均值漂移算法的图像分割二.基于分水岭算法的图像分割三.总结一.基于均值漂移算法的图像分割 均值漂移(Mean Shfit)算法是一种通用的聚类算法,最早是1975年Fuk...
    99+
    2023-01-11
    Python均值漂移算法 图像分割 Python 分水岭算法 图像分割 Python图像分割
  • CSS中如何使用cross-fade()实现背景图像半透明效果
    这篇文章给大家分享的是有关CSS中如何使用cross-fade()实现背景图像半透明效果的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。   cross-fade()函数可以让两...
    99+
    2024-04-02
  • 利用CSS实现元素的模糊背景效果的方法
    利用CSS实现元素的模糊背景效果的方法,需要具体代码示例随着Web设计的不断发展,如何让页面元素呈现出优雅、独特的效果成为了设计师们关注的焦点之一。其中一种常见的效果是模糊背景。通过将元素的背景进行模糊处理,可以增强界面的层次感和美观度。在...
    99+
    2023-11-21
    CSS 背景 模糊效果
  • C++ opencv利用grabCut算法实现抠图示例
    目录前言一、grabCut函数二、compare函数三、代码前言 grabCut算法利用了图像中的纹理(颜色)信息和边界(反差)信息,只用少量的用户交互操作,即可得到比较好的分割结果...
    99+
    2024-04-02
  • C++ opencv如何利用grabCut算法实现抠图
    今天小编给大家分享一下C++ opencv如何利用grabCut算法实现抠图的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解...
    99+
    2023-06-30
  • 使用C++如何实现PatchMatch图像修复算法
    今天小编给大家分享的是使用C++如何实现PatchMatch图像修复算法,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。PatchMatch算法出自Barnes的论文PatchMatc...
    99+
    2023-06-14
  • 使用Python实现图像融合及加法运算
    目录一.图像加法运算1.Numpy库加法2.OpenCV加法运算二.图像融合三.图像类型转换一.图像加法运算 1.Numpy库加法 其运算方法是:目标图像 = 图像1 + 图像2,运...
    99+
    2024-04-02
  • C语言如何使用移位实现乘除法运算
    这篇文章主要为大家展示了“C语言如何使用移位实现乘除法运算”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C语言如何使用移位实现乘除法运算”这篇文章吧。移位实现乘...
    99+
    2024-04-02
  • 如何使用Python实现图像融合及加法运算
    这篇文章主要介绍“如何使用Python实现图像融合及加法运算”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“如何使用Python实现图像融合及加法运算”文章能帮助大家解决问题。一.图像加法运算1.Nu...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作