自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

OpenCV輕量高效的圖像視覺庫

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

OpenCV介紹

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

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

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

OpenCV使用

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

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

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應(yīng)用中 始化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) 「編譯和運行」:在完成配置后,編譯并運行應(yīng)用以測試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?) {

        }
    }
} 

總結(jié)

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

OpenCV的使用場景非常廣泛:

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

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

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

2024-06-28 10:16:58

2023-06-27 08:41:35

DapperSQL語句

2023-10-12 09:21:41

Java圖像

2025-04-14 10:58:53

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

2022-04-15 14:31:02

鴻蒙操作系統(tǒng)

2024-11-07 16:03:09

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

2021-08-26 05:27:57

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

2024-03-14 11:06:37

JavaScript引擎探索

2024-01-05 15:32:47

鴻蒙SNTP智慧時鐘

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)

2025-03-03 08:00:00

小紅書AI圖像檢測模型AI

2009-09-29 13:48:24

SpringSourcSpring

2022-02-10 15:07:10

云平臺OpenHarmon系統(tǒng)開發(fā)

2023-04-03 15:39:31

2022-01-21 21:22:24

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

2020-05-25 19:44:58

LubuntuLubuntu 20.
點贊
收藏

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