亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

保山市| 应城市| 巴南区| 苏尼特右旗| 黄梅县| 安新县| 邛崃市| 鹤岗市| 彝良县| 右玉县| 襄城县| 体育| 舟山市| 新源县| 无锡市| 嘉鱼县| 吉木乃县| 靖安县| 资阳市| 屏山县| 申扎县| 麻江县| 麟游县| 万盛区| 铜川市| 黄石市| 镇平县| 乐平市| 西藏| 天峨县| 怀远县| 沧州市| 临沧市| 常山县| 合山市| 浙江省| 镇雄县| 青浦区| 温宿县| 准格尔旗| 西林县|