Kotlin OpenCV 视频分析和对象跟踪60 MIL 对象跟踪

Kotlin OpenCV 视频分析和对象跟踪60 MIL 对象跟踪

  • [1 OpenCV 对象跟踪算法](#1 OpenCV 对象跟踪算法)
  • [2 Kotlin 引入依赖](#2 Kotlin 引入依赖)
  • [3 OpenCV 下载](#3 OpenCV 下载)
  • [4 Kotlin OpenCV MIL 对象跟踪](#4 Kotlin OpenCV MIL 对象跟踪)

1 OpenCV 对象跟踪算法

算法 算法 特点
1 BOOSTING Tracker 基于 AdaBoost 算法。 适合于简单的对象跟踪任务。 算法较老,在复杂场景中表现一般。
2 KCF Tracker (Kernelized Correlation Filters) 基于核相关滤波器的算法。 计算速度快,适合实时应用。 对尺度变化和旋转的适应性较差。
3 TLD Tracker (Tracking-Learning-Detection) 结合了跟踪、学习和检测的三部分。 适合处理长时间跟踪和对象消失再出现的情况。 复杂度较高,运行速度较慢。
4 MedianFlow Tracker 基于光流法的中值流算法。 对预测跟踪位置的误差敏感,适合处理稳定运动的对象。 在快速运动或剧烈变化的背景下效果不佳。
5 GOTURN Tracker (Generic Object Tracking Using Regression Networks) 基于深度学习的回归网络。 不需要在线更新模型,跟踪效果稳定。 需要大量的训练数据,计算资源需求较高。
6 MOSSE Tracker (Minimum Output Sum of Squared Error) 基于最小输出平方误差的滤波器。 计算速度非常快,适合实时跟踪。 对噪声和光照变化敏感。
7 CSRT Tracker (Discriminative Correlation Filter with Channel and Spatial Reliability) 改进的相关滤波器,具有空间和通道可靠性。 在复杂背景下表现优异,对尺度变化有较好适应性。 计算量较大,速度较慢。
8 DaSiamRPN Tracker (Siamese Region Proposal Network) 基于孪生网络的区域建议方法。 能够处理快速运动和尺度变化。 需要预先训练好的模型,计算资源需求高。
9 MIL Tracker (Multiple Instance Learning) 基于多实例学习算法。 能够处理部分遮挡的问题。 在动态变化的背景下表现不佳。

2 Kotlin 引入依赖

xml 复制代码
<dependency>
    <groupId>org.bytedeco</groupId>
    <artifactId>opencv-platform</artifactId>
    <version>4.9.0-1.5.10</version>
</dependency>

3 OpenCV 下载

OpenCV 下载地址

4 Kotlin OpenCV MIL 对象跟踪

Kotlin OpenCV 全部代码

kotlin 复制代码
package com.xu.com.xu.tracking

import org.bytedeco.opencv.global.opencv_highgui
import org.bytedeco.opencv.global.opencv_imgproc
import org.bytedeco.opencv.opencv_core.Mat
import org.bytedeco.opencv.opencv_core.Rect
import org.bytedeco.opencv.opencv_core.Scalar
import org.bytedeco.opencv.opencv_video.Tracker
import org.bytedeco.opencv.opencv_video.TrackerMIL
import org.bytedeco.opencv.opencv_videoio.VideoCapture
import org.opencv.core.Core
import java.io.File
import java.util.*


object Tracking {

    init {
        val os = System.getProperty("os.name")
        val type = System.getProperty("sun.arch.data.model")
        if (os.uppercase(Locale.getDefault()).contains("WINDOWS")) {
            val lib = if (type.endsWith("64")) {
                File("lib\\opencv-4.9\\x64\\" + System.mapLibraryName(Core.NATIVE_LIBRARY_NAME))
            } else {
                File("lib\\opencv-4.9\\x86\\" + System.mapLibraryName(Core.NATIVE_LIBRARY_NAME))
            }
            System.load(lib.absolutePath)
        }
        println(Core.VERSION)
    }

    @JvmStatic
    fun main(args: Array<String>) {
        val video = VideoCapture("lib/data/video/cup.mp4")
        // 第一帧影像
        val first = Mat()
        video.read(first)
        // 鼠标框选区域
        val roi: Rect? = opencv_highgui.selectROI("Select", first, false, false, false)
        opencv_highgui.destroyWindow("Select")
        // 创建跟踪器
        val tracker: Tracker = TrackerMIL.create()
        tracker.init(first, roi)
        while (video.read(first)) {
            // 更新跟踪器
            val ok = tracker.update(first, roi)
            if (ok) {
                opencv_imgproc.rectangle(first, roi, Scalar(0.0, 0.0, 225.0, 0.0))
            } else {
                println("跟踪失败")
            }
            opencv_highgui.imshow("Tracking", first)
            if (opencv_highgui.waitKey(1) == 27) {
                break
            }
        }
        video.release()
        opencv_highgui.destroyAllWindows()
    }

}


相关推荐
拓端研究室2 小时前
R基于贝叶斯加法回归树BART、MCMC的DLNM分布滞后非线性模型分析母婴PM2.5暴露与出生体重数据及GAM模型对比、关键窗口识别
android·开发语言·kotlin
zhangphil3 小时前
Android简洁缩放Matrix实现图像马赛克,Kotlin
android·kotlin
_Shirley16 小时前
鸿蒙设置app更新跳转华为市场
android·华为·kotlin·harmonyos·鸿蒙
小白学大数据1 天前
高级技术文章:使用 Kotlin 和 Unirest 构建高效的 Facebook 图像爬虫
爬虫·数据分析·kotlin
guitarjoy1 天前
Kotlin - 协程结构化并发Structured Concurrency
kotlin·协程·coroutinescope·结构化同步
zhangphil2 天前
Android使用PorterDuffXfermode模式PorterDuff.Mode.SRC_OUT橡皮擦实现“刮刮乐”效果,Kotlin(2)
android·kotlin
居居飒3 天前
Android学习(四)-Kotlin编程语言-for循环
android·学习·kotlin
刘争Stanley4 天前
如何高效调试复杂布局?Layout Inspector 的 Toggle Deep Inspect 完全解析
android·kotlin·android 15·黑屏闪屏白屏
sickworm陈浩4 天前
Java 转 Kotlin 系列:究竟该不该用 lateinit?
android·kotlin
droidHZ5 天前
Compose Multiplatform 之旅—声明式UI
android·kotlin