成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

OpenCV輕量高效的圖像視覺庫

人工智能 機器視覺
OpenCV是一個強大的計算機視覺庫,它包含了大量的算法和函數,可以用于圖像處理、計算機視覺、模式識別、機器學習等領域。

OpenCV介紹

OpenCV是一個基于Apache2.0許可(開源)發行的跨平臺計算機視覺和機器學習軟件庫,可以運行在Linux、Windows、Android和Mac OS操作系統上。OpenCV輕量級而且高效——由一系列 C 函數和少量 C++ 類構成,同時提供了Python、Ruby、MATLAB等語言的接口,實現了圖像處理和計算機視覺方面的很多通用算法。OpenCV用C++語言編寫,具有C ++,Python,Java和MATLAB接口,并支持Windows,Linux,Android和Mac OS,OpenCV主要傾向于實時視覺應用,并在可用時利用MMX和SSE指令,也提供對于C#、Ch、Ruby,GO的支持。

OpenCV是一個強大的計算機視覺庫,它包含了大量的算法和函數,可以用于圖像處理、計算機視覺、模式識別、機器學習等領域。OpenCV的應用領域非常廣泛,包括機器人視覺、模式識別、機器學習、工廠自動化生產線產品檢測、醫學影像、攝像機標定、遙感圖像等。OpenCV也可以解決人機交互、機器人視覺、運動跟蹤、圖像分類、人臉識別、物體識別、特征檢測、視頻分析、深度圖像等問題。

OpenCV的底層由C和C++編寫,輕量且高效,可以運行在多個操作系統上,同時提供了多種編程語言的API接口,如Python、Ruby、MATLAB等。OpenCV也支持基于CUDA和OpenCL的高速GPU操作接口。

OpenCV使用

(1) 「下載OpenCV SDK for Android」:從OpenCV官網下載適用于Android的OpenCV SDK。

(2) 「配置Android項目」:在Android Studio中,創建一個新的項目或打開一個已有的項目。將下載的OpenCV SDK作為一個Module導入到項目中。

android {
    compileSdkVersion 34
    //新的Android Studio需添加
    namespace "org.opencv"

    buildFeatures {
        //啟用aidl
        aidl true
    }
}

gradle.properties中添加:

android.defaults.buildfeatures.buildconfig=true

(3) 「配置項目依賴」:在項目的build.gradle文件中,添加對OpenCV SDK的依賴。

implementation project(':opencv')

(4) 「初始化OpenCV」:在Android應用中 始化OpenCV庫。

class MainActivity : AppCompatActivity() {
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION, this, mLoaderCallbackInterface)
    }

    private val mLoaderCallbackInterface = object : LoaderCallbackInterface {
        override fun onManagerConnected(status: Int) {
            //OpenCV加載成功
        }

        override fun onPackageInstall(operation: Int, callback: InstallCallbackInterface?) {

        }
    }
}

(5) 「使用OpenCV功能」:加載圖像、顯示圖像、進行圖像處理等。

(6) 「編譯和運行」:在完成配置后,編譯并運行應用以測試OpenCV功能是否正常工作。

OpenCV圖片灰度處理示例:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <ImageView
        android:id="@+id/iv_image"
        android:layout_width="match_parent"
        android:layout_height="300dp"
        android:scaleType="centerCrop" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:orientation="horizontal">

        <Button
            android:id="@+id/btn_load"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="加載圖片"
            android:textSize="16sp" />

        <Button
            android:id="@+id/btn_gray"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="16dp"
            android:layout_weight="1"
            android:text="圖片灰度化"
            android:textSize="16sp" />
    </LinearLayout>

</LinearLayout>
package com.reathin.count

import android.R.attr.bitmap
import android.content.Intent
import android.graphics.Bitmap
import android.graphics.BitmapFactory
import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import com.reathin.count.databinding.ActivityMainBinding
import org.opencv.android.InstallCallbackInterface
import org.opencv.android.LoaderCallbackInterface
import org.opencv.android.OpenCVLoader
import org.opencv.android.Utils
import org.opencv.core.CvType
import org.opencv.core.Mat
import org.opencv.imgproc.Imgproc


class MainActivity : AppCompatActivity() {

    private val TAG = MainActivity::class.java.simpleName

    private lateinit var mBinding: ActivityMainBinding
    private var mBitmap: Bitmap? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        mBinding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(mBinding.root)

        //初始化OpenCV
        val initState = OpenCVLoader.initDebug(true)
        Log.d(TAG, "onCreate: OpenCV初始化$initState")

        mBinding.btnLoad.setOnClickListener {
            val intent = Intent()
            intent.setType("image/*")

            intent.setAction(Intent.ACTION_GET_CONTENT)
            startActivityForResult(intent, 20240104)
        }
        mBinding.btnGray.setOnClickListener {
            if (mBitmap == null) {
                return@setOnClickListener
            }
            //進行灰度
            mBitmap?.run {
                val bitmap = Bitmap.createBitmap(this.width, this.height, Bitmap.Config.ARGB_8888)
                val srcMat = Mat()
                val dstMat = Mat()
                Utils.bitmapToMat(this, srcMat)
                Imgproc.cvtColor(srcMat, dstMat, Imgproc.COLOR_BGRA2GRAY)
                Utils.matToBitmap(dstMat, bitmap)
                runOnUiThread { mBinding.ivImage.setImageBitmap(bitmap) }
                srcMat.release()
                dstMat.release()
            }
        }

    }

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if (requestCode == 20240104 && resultCode == RESULT_OK && data != null) {
            data.data?.run {
                mBitmap = BitmapFactory.decodeStream(contentResolver.openInputStream(this))
            }
            mBitmap?.run {
                mBinding.ivImage.setImageBitmap(this)
            }
        }
    }

    private val mLoaderCallbackInterface = object : LoaderCallbackInterface {
        override fun onManagerConnected(status: Int) {
            Log.d(TAG, "onManagerConnected: $status")
            if (status == LoaderCallbackInterface.SUCCESS) {
                //OpenCV加載成功
            }
        }

        override fun onPackageInstall(operation: Int, callback: InstallCallbackInterface?) {

        }
    }
} 

總結

OpenCV是一個跨平臺的計算機視覺庫,可以運行在Linux、Windows、Android和Mac OS操作系統上。OpenCV輕量級而且高效,由一系列C函數和少量C++類構成,同時提供了Python、Ruby、MATLAB等語言的接口,實現了圖像處理和計算機視覺方面的很多通用算法。

OpenCV的使用場景非常廣泛:

  • 「醫學影像分析」:OpenCV可以用于醫學影像處理,如醫學圖像分割、醫學圖像配準、醫學圖像增強等。例如,在肺部結節檢測和病理識別中,可以使用OpenCV進行圖像增強、邊緣檢測和病變分割等操作。
  • 「智能交通系統」:在智能交通系統中,OpenCV可以用于車輛檢測、車牌識別和行人跟蹤等任務。例如,通過使用OpenCV,可以檢測圖像或視頻中的車輛,對車牌進行識別,并跟蹤行人的運動軌跡。
  • 「安防監控系統」:在安防監控領域,OpenCV可以用于行為識別、目標追蹤和異常檢測等任務。例如,通過使用OpenCV,可以識別監控視頻中的異常行為,如入侵、火災等,并及時發出警報。
  • 「機器人視覺」:在機器人視覺領域,OpenCV可以用于環境感知、手勢識別和姿態估計等任務。例如,通過使用OpenCV,機器人可以識別障礙物、地標等信息,以及進行自主導航。
  • 「計算機視覺」:OpenCV可用于計算機視覺任務,如目標檢測、圖像分類、人臉識別、姿態估計、運動估計、光流估計等。例如,可以使用OpenCV進行人臉識別和跟蹤,實現門禁系統等功能。
  • 「視頻分析」:OpenCV可用于視頻分析任務,如視頻跟蹤、行為識別、動作識別等。例如,在智能視頻監控系統中,可以使用OpenCV對視頻進行分析和處理,實現視頻內容的理解和分析。
  • 「圖像處理」:OpenCV可以實現各種圖像處理功能,包括圖像顏色校正、銳化和模糊等。例如,可以使用OpenCV對圖像進行色彩空間轉換、圖像濾波等操作,改善圖像質量。
  • 「圖像識別」:OpenCV可以實現圖像識別功能,識別圖像中的字符和數字。例如,可以使用OpenCV進行車牌識別、印刷文字識別等任務。

OpenCV具有廣泛的應用領域,包括圖像像素操作、幾何運算、邏輯運算、像素統計、色彩空間轉換、卷積圖像處理、形態學處理、特征提取等。它可以幫助研究人員和開發人員快速實現計算機視覺應用,提高圖像處理和識別的準確率。

責任編輯:趙寧寧 來源: 沐雨花飛蝶
相關推薦

2024-06-28 10:16:58

2023-06-27 08:41:35

DapperSQL語句

2023-10-12 09:21:41

Java圖像

2022-04-15 14:31:02

鴻蒙操作系統

2025-04-14 10:58:53

Agno多模態智能體LangGraph

2024-11-07 16:03:09

計算機視覺圖像圖像處理 處理深度學習

2021-08-26 05:27:57

Swift 監聽系統泛型

2024-03-14 11:06:37

JavaScript引擎探索

2022-02-09 19:45:41

MQTTOpenHarmon鴻蒙

2022-04-15 11:46:09

輕量系統解耦鴻蒙操作系統

2021-09-13 08:20:13

Loki日志系統

2024-01-05 15:32:47

鴻蒙SNTP智慧時鐘

2025-03-03 08:00:00

小紅書AI圖像檢測模型AI

2009-09-29 13:48:24

SpringSourcSpring

2020-05-25 19:44:58

LubuntuLubuntu 20.

2022-01-21 21:22:24

OpenHarmon操作系統鴻蒙

2022-02-10 15:07:10

云平臺OpenHarmon系統開發

2023-04-03 15:39:31

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产三区视频在线观看 | 午夜一级大片 | 亚洲精品视频在线播放 | 精品国产一级片 | 亚洲高清视频在线 | 欧美日韩电影一区二区 | 精品熟人一区二区三区四区 | 免费国产一区二区 | 午夜精品久久久久久久久久久久 | 日本成人在线观看网站 | 成人精品国产一区二区4080 | 日本黄色短片 | 国产一区二区在线免费播放 | 久久夜视频| 中文字幕在线观 | 中文字幕成人在线 | 日韩免费1区二区电影 | 日韩精品免费在线 | 亚洲精品一区二区三区蜜桃久 | 亚洲福利一区 | 米奇狠狠鲁 | 天堂一区二区三区 | av网站免费看 | 久久99精品久久久久久 | 日韩精品一区二区三区中文在线 | 99精品久久 | 久久久久久色 | 在线国产一区二区三区 | 国产精品久久久久久亚洲调教 | 国产一区二区三区久久久久久久久 | 久久专区| 青青草久久| 欧美成人影院在线 | 精品久久国产 | 亚洲一区二区三区四区五区午夜 | 国产精品福利视频 | 色婷婷综合久久久久中文一区二区 | 国产大片一区 | 国产高清在线 | 国产精品美女久久久久aⅴ国产馆 | 天天欧美|