偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

OpenCV輕量高效的圖像視覺(jué)庫(kù)

人工智能 機(jī)器視覺(jué)
OpenCV是一個(gè)強(qiáng)大的計(jì)算機(jī)視覺(jué)庫(kù),它包含了大量的算法和函數(shù),可以用于圖像處理、計(jì)算機(jī)視覺(jué)、模式識(shí)別、機(jī)器學(xué)習(xí)等領(lǐng)域。

OpenCV介紹

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

OpenCV是一個(gè)強(qiáng)大的計(jì)算機(jī)視覺(jué)庫(kù),它包含了大量的算法和函數(shù),可以用于圖像處理、計(jì)算機(jī)視覺(jué)、模式識(shí)別、機(jī)器學(xué)習(xí)等領(lǐng)域。OpenCV的應(yīng)用領(lǐng)域非常廣泛,包括機(jī)器人視覺(jué)、模式識(shí)別、機(jī)器學(xué)習(xí)、工廠自動(dòng)化生產(chǎn)線產(chǎn)品檢測(cè)、醫(yī)學(xué)影像、攝像機(jī)標(biāo)定、遙感圖像等。OpenCV也可以解決人機(jī)交互、機(jī)器人視覺(jué)、運(yùn)動(dòng)跟蹤、圖像分類、人臉識(shí)別、物體識(shí)別、特征檢測(cè)、視頻分析、深度圖像等問(wèn)題。

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

OpenCV使用

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

(2) 「配置Android項(xiàng)目」:在Android Studio中,創(chuàng)建一個(gè)新的項(xiàng)目或打開(kāi)一個(gè)已有的項(xiàng)目。將下載的OpenCV SDK作為一個(gè)Module導(dǎo)入到項(xiàng)目中。

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

    buildFeatures {
        //啟用aidl
        aidl true
    }
}

gradle.properties中添加:

android.defaults.buildfeatures.buildconfig=true

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

implementation project(':opencv')

(4) 「初始化OpenCV」:在Android應(yīng)用中 始化OpenCV庫(kù)。

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功能」:加載圖像、顯示圖像、進(jìn)行圖像處理等。

(6) 「編譯和運(yùn)行」:在完成配置后,編譯并運(yùn)行應(yīng)用以測(cè)試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
            }
            //進(jìn)行灰度
            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?) {

        }
    }
} 

總結(jié)

OpenCV是一個(gè)跨平臺(tái)的計(jì)算機(jī)視覺(jué)庫(kù),可以運(yùn)行在Linux、Windows、Android和Mac OS操作系統(tǒng)上。OpenCV輕量級(jí)而且高效,由一系列C函數(shù)和少量C++類構(gòu)成,同時(shí)提供了Python、Ruby、MATLAB等語(yǔ)言的接口,實(shí)現(xiàn)了圖像處理和計(jì)算機(jī)視覺(jué)方面的很多通用算法。

OpenCV的使用場(chǎng)景非常廣泛:

  • 「醫(yī)學(xué)影像分析」:OpenCV可以用于醫(yī)學(xué)影像處理,如醫(yī)學(xué)圖像分割、醫(yī)學(xué)圖像配準(zhǔn)、醫(yī)學(xué)圖像增強(qiáng)等。例如,在肺部結(jié)節(jié)檢測(cè)和病理識(shí)別中,可以使用OpenCV進(jìn)行圖像增強(qiáng)、邊緣檢測(cè)和病變分割等操作。
  • 「智能交通系統(tǒng)」:在智能交通系統(tǒng)中,OpenCV可以用于車輛檢測(cè)、車牌識(shí)別和行人跟蹤等任務(wù)。例如,通過(guò)使用OpenCV,可以檢測(cè)圖像或視頻中的車輛,對(duì)車牌進(jìn)行識(shí)別,并跟蹤行人的運(yùn)動(dòng)軌跡。
  • 「安防監(jiān)控系統(tǒng)」:在安防監(jiān)控領(lǐng)域,OpenCV可以用于行為識(shí)別、目標(biāo)追蹤和異常檢測(cè)等任務(wù)。例如,通過(guò)使用OpenCV,可以識(shí)別監(jiān)控視頻中的異常行為,如入侵、火災(zāi)等,并及時(shí)發(fā)出警報(bào)。
  • 「機(jī)器人視覺(jué)」:在機(jī)器人視覺(jué)領(lǐng)域,OpenCV可以用于環(huán)境感知、手勢(shì)識(shí)別和姿態(tài)估計(jì)等任務(wù)。例如,通過(guò)使用OpenCV,機(jī)器人可以識(shí)別障礙物、地標(biāo)等信息,以及進(jìn)行自主導(dǎo)航。
  • 「計(jì)算機(jī)視覺(jué)」:OpenCV可用于計(jì)算機(jī)視覺(jué)任務(wù),如目標(biāo)檢測(cè)、圖像分類、人臉識(shí)別、姿態(tài)估計(jì)、運(yùn)動(dòng)估計(jì)、光流估計(jì)等。例如,可以使用OpenCV進(jìn)行人臉識(shí)別和跟蹤,實(shí)現(xiàn)門禁系統(tǒng)等功能。
  • 「視頻分析」:OpenCV可用于視頻分析任務(wù),如視頻跟蹤、行為識(shí)別、動(dòng)作識(shí)別等。例如,在智能視頻監(jiān)控系統(tǒng)中,可以使用OpenCV對(duì)視頻進(jìn)行分析和處理,實(shí)現(xiàn)視頻內(nèi)容的理解和分析。
  • 「圖像處理」:OpenCV可以實(shí)現(xiàn)各種圖像處理功能,包括圖像顏色校正、銳化和模糊等。例如,可以使用OpenCV對(duì)圖像進(jìn)行色彩空間轉(zhuǎn)換、圖像濾波等操作,改善圖像質(zhì)量。
  • 「圖像識(shí)別」:OpenCV可以實(shí)現(xiàn)圖像識(shí)別功能,識(shí)別圖像中的字符和數(shù)字。例如,可以使用OpenCV進(jìn)行車牌識(shí)別、印刷文字識(shí)別等任務(wù)。

OpenCV具有廣泛的應(yīng)用領(lǐng)域,包括圖像像素操作、幾何運(yùn)算、邏輯運(yùn)算、像素統(tǒng)計(jì)、色彩空間轉(zhuǎn)換、卷積圖像處理、形態(tài)學(xué)處理、特征提取等。它可以幫助研究人員和開(kāi)發(fā)人員快速實(shí)現(xiàn)計(jì)算機(jī)視覺(jué)應(yīng)用,提高圖像處理和識(shí)別的準(zhǔn)確率。

責(zé)任編輯:趙寧寧 來(lái)源: 沐雨花飛蝶
相關(guān)推薦

2024-06-28 10:16:58

2023-06-27 08:41:35

DapperSQL語(yǔ)句

2023-10-12 09:21:41

Java圖像

2022-04-15 14:31:02

鴻蒙操作系統(tǒng)

2025-04-14 10:58:53

Agno多模態(tài)智能體LangGraph

2024-11-07 16:03:09

計(jì)算機(jī)視覺(jué)圖像圖像處理 處理深度學(xué)習(xí)

2021-08-26 05:27:57

Swift 監(jiān)聽(tīng)系統(tǒng)泛型

2024-03-14 11:06:37

JavaScript引擎探索

2022-02-09 19:45:41

MQTTOpenHarmon鴻蒙

2022-04-15 11:46:09

輕量系統(tǒng)解耦鴻蒙操作系統(tǒng)

2021-09-13 08:20:13

Loki日志系統(tǒng)

2024-01-05 15:32:47

鴻蒙SNTP智慧時(shí)鐘

2025-03-03 08:00:00

小紅書AI圖像檢測(cè)模型AI

2009-09-29 13:48:24

SpringSourcSpring

2020-05-25 19:44:58

LubuntuLubuntu 20.

2022-01-21 21:22:24

OpenHarmon操作系統(tǒng)鴻蒙

2023-04-03 15:39:31

2022-02-10 15:07:10

云平臺(tái)OpenHarmon系統(tǒng)開(kāi)發(fā)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)