中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java?OpenCV中怎么用KNN算法實現圖像背景移除

發布時間:2022-02-06 18:57:40 來源:億速云 閱讀:215 作者:iii 欄目:開發技術

這篇文章主要講解了“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算法實現圖像背景移除”的內容了,經過本文的學習后,相信大家對Java OpenCV中怎么用KNN算法實現圖像背景移除這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

砚山县| 永定县| 玉溪市| 浏阳市| 灵宝市| 蓬安县| 方正县| 大城县| 张掖市| 阜阳市| 调兵山市| 桂东县| 溧阳市| 阳山县| 石景山区| 新干县| 淮滨县| 黔东| 镇赉县| 新营市| 宁波市| 太湖县| 宝丰县| 德庆县| 边坝县| 红桥区| 绍兴市| 和林格尔县| 桐城市| 吉林省| 西青区| 彰武县| 阜新| 越西县| 灌云县| 库伦旗| 西藏| 揭阳市| 朝阳区| 祁门县| 南川市|