国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

使用 Clojure 進(jìn)行 OpenCV 開發(fā)簡介

這篇具有很好參考價(jià)值的文章主要介紹了使用 Clojure 進(jìn)行 OpenCV 開發(fā)簡介。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

從 OpenCV 2.4.4 開始,OpenCV 支持使用與 Android 開發(fā)幾乎相同的接口進(jìn)行桌面 Java 開發(fā)。

Clojure?是由 Java 虛擬機(jī)托管的一種現(xiàn)代 LISP 方言,它提供了與底層 JVM 的完全互操作性。這意味著我們甚至應(yīng)該能夠使用 Clojure REPL(Read Eval Print Loop)作為底層 OpenCV 引擎的交互式可編程接口。

我們將在本教程中執(zhí)行的操作

本教程將幫助您設(shè)置一個(gè)基本的 Clojure 環(huán)境,以便在完全可編程的 CLojure REPL 中以交互方式學(xué)習(xí) OpenCV。

教程源代碼

您可以在 OpenCV 存儲(chǔ)庫的文件夾中找到該示例的可運(yùn)行源代碼。按照教程中的說明安裝 OpenCV 和 Clojure 后,發(fā)出以下命令以從命令行運(yùn)行示例。samples/java/clojure/simple-sample

cd 路徑/to/samples/java/clojure/simple-sample
萊恩潤

序言

有關(guān)安裝具有桌面 Java 支持的 OpenCV 的詳細(xì)說明,請參閱相應(yīng)的教程”。

如果您趕時(shí)間,以下是在 Mac OS X 上安裝 OpenCV 的最低快速入門指南:

注意

我假設(shè)您已經(jīng)安裝了?xcode、jdk?和?Cmake。

cd ~/
mkdir 選項(xiàng)
git clone https://github.com/opencv/opencv.git
光盤opencv
git checkout 2.4
mkdir 構(gòu)建
CD 構(gòu)建
cmake -DBUILD_SHARED_LIBS=關(guān)閉 ..
...
...
制造 -j8
# 可選
# make install

安裝 Leiningen

一旦你安裝了支持桌面java的OpenCV,唯一的其他要求就是安裝Leiningeng,它允許你管理CLJ項(xiàng)目的整個(gè)生命周期。

可用的安裝指南非常容易遵循:

  1. 下載腳本
  2. 把它放在你的$PATH上(如果它在你的路徑上,cf./bin 是一個(gè)不錯(cuò)的選擇。
  3. 將腳本設(shè)置為可執(zhí)行。(即 chmod 755/bin/lein)。

如果您在 Windows 上工作,請按照以下說明操作

現(xiàn)在,您已經(jīng)擁有了 OpenCV 庫和完全安裝的基本 Clojure 環(huán)境?,F(xiàn)在需要的是配置 Clojure 環(huán)境以與 OpenCV 庫進(jìn)行交互。

安裝 localrepo Leiningen 插件

Leiningen 原生支持的命令集(用 Leiningen 術(shù)語來說就是任務(wù))可以很容易地通過各種插件進(jìn)行擴(kuò)展。其中之一是?lein-localrepo?插件,它允許將任何 jar lib 作為工件安裝在機(jī)器的本地 maven 存儲(chǔ)庫中(通常在用戶名的 /.m2/repository 目錄中)。

我們將使用這個(gè) lein 插件將 Java 和 Clojure 使用 opencv 庫所需的 opencv 組件添加到本地 maven 存儲(chǔ)庫中。

一般來說,如果你只想在項(xiàng)目基礎(chǔ)上使用一個(gè)插件,可以直接添加到lein創(chuàng)建的CLJ項(xiàng)目中。

相反,當(dāng)您希望插件可用于用戶名空間中的任何 CLJ 項(xiàng)目時(shí),您可以將其添加到 /.lein/ 目錄中的 profiles.clj。

lein-localrepo 插件在其他 CLJ 項(xiàng)目中對我有用,在這些項(xiàng)目中,我需要調(diào)用由 Java 接口包裝的本機(jī)庫。因此,我決定將其提供給任何 CLJ 項(xiàng)目:

mkdir ~/.lein

在 /.lein 目錄中創(chuàng)建名為 profiles.clj 的文件,并將以下內(nèi)容復(fù)制到其中:

{:user {:p lugins [[lein-localrepo “0.5.2”]]}}

在這里,我們說 lein-localrepo 插件的版本“0.5.2”將可用于 lein 創(chuàng)建的任何 CLJ 項(xiàng)目的 :user 配置文件。

您無需執(zhí)行任何其他操作即可安裝該插件,因?yàn)楫?dāng)您第一次發(fā)出任何 lein 任務(wù)時(shí),它將自動(dòng)從遠(yuǎn)程存儲(chǔ)庫下載。

將特定于 java 的庫安裝為本地存儲(chǔ)庫

如果您遵循了在計(jì)算機(jī)上安裝 OpenCV 的標(biāo)準(zhǔn)文檔,您應(yīng)該在構(gòu)建 OpenCV 的目錄下找到以下兩個(gè)庫:

  • build/bin/opencv-247.jar java 庫
  • build/lib/libopencv_java247.dylib 原生庫(或 .so 在你構(gòu)建的 OpenCV 一個(gè) GNU/Linux 操作系統(tǒng)中)

它們是 JVM 與 OpenCV 交互所需的唯一 opencv 庫。

拆解所需的 opencv 庫

創(chuàng)建一個(gè)新目錄以存儲(chǔ)在上述兩個(gè)庫中。首先將 opencv-247.jar 庫復(fù)制到其中。

cd ~/選擇
mkdir clj-opencv
光盤 CLJ-openCV
cp ~/opt/opencv/build/bin/opencv-247.jar .

第一個(gè)庫完成。

現(xiàn)在,為了能夠?qū)?libopencv_java247.dylib 共享的原生庫添加到本地 maven 存儲(chǔ)庫中,我們首先需要將其打包為 jar 文件。

必須將本機(jī)庫復(fù)制到模仿操作系統(tǒng)和體系結(jié)構(gòu)名稱的目錄布局中。我正在使用具有 X86 64 位架構(gòu)的 Mac OS X。所以我的布局如下:

mkdir -p 本機(jī)/macosx/x86_64

將 libopencv_java247.dylib 庫復(fù)制到 x86_64 目錄中。

cp ~/opt/opencv/build/lib/libopencv_java247.dylib 本機(jī)/macosx/x86_64/

如果您從不同的操作系統(tǒng)/體系結(jié)構(gòu)對運(yùn)行 OpenCV,以下是您可以選擇的映射摘要。

操作系統(tǒng)
Mac OS X - > macosx
Windows -> Windows
Linux -> linux
SunOS -> solaris
架構(gòu)
amd64 -> x86_64
x86_64 -> x86_64
x86 -> x86
i386 -> x86
胳膊 -> 胳膊
sparc -> sparc

將本機(jī) lib 打包為 jar

接下來,您需要使用 jar 命令從目錄創(chuàng)建新的 jar 文件,將本機(jī) lib 打包到 jar 文件中。

jar -cMf opencv-native-247.jar 原生

請注意,ehe M 選項(xiàng)指示 jar 命令不為工件創(chuàng)建 MANIFEST 文件。

目錄布局應(yīng)如下所示:

.
|__ 原生
| |__ macOSX
| |__ x86_64
| |__ libopencv_java247.dylib
|
|__ opencv-247.jar
|__ opencv-native-247.jar
3 個(gè)目錄,3 個(gè)文件

本地安裝 jar

現(xiàn)在,我們已準(zhǔn)備好借助 lein-localrepo 插件將這兩個(gè) jar 作為工件添加到本地 maven 存儲(chǔ)庫中。

lein localrepo 安裝 opencv-247.jar opencv/opencv 2.4.7

在這里,localrepo 安裝任務(wù)創(chuàng)建了 2.4.7。從 opencv-247.jar 庫發(fā)布 OpenCV/OpenCV Maven 工件,然后將其安裝到本地 Maven 存儲(chǔ)庫中。然后,opencv/opencv 工件將可用于任何符合 maven 的項(xiàng)目(Leiningen 內(nèi)部基于 maven)。

對之前包裝在新 jar 文件中的本機(jī)庫執(zhí)行相同的操作。

lein localrepo 安裝 opencv-native-247.jar opencv/opencv-native 2.4.7

請注意,這兩個(gè)工件的 groupId opencv 是相同的?,F(xiàn)在,我們已準(zhǔn)備好創(chuàng)建一個(gè)新的 CLJ 項(xiàng)目來開始與 OpenCV 進(jìn)行交互。

創(chuàng)建項(xiàng)目

使用終端中的 lein new 任務(wù)創(chuàng)建新的 CLJ 項(xiàng)目。

# cd (例如 ~/devel)
Lein 新簡單示例
基于“默認(rèn)”模板生成一個(gè)名為 simple-sample 的項(xiàng)目。
要查看其他模板(應(yīng)用程序、lein 插件等),請嘗試“l(fā)ein help new”。

上述任務(wù)將創(chuàng)建以下簡單示例目錄布局:

樹簡單示例/
簡單樣品/
|__ 許可證
|__ README.md
|__ 文檔
| |__ intro.md
|
|__ project.clj
|__ 資源
|__ 來源
| |__ simple_sample
| |__ core.clj
|__ 測試
|__ simple_sample
|__ core_test.clj
6 個(gè)目錄,6 個(gè)文件

我們需要添加兩個(gè) opencv 工件作為新創(chuàng)建項(xiàng)目的依賴項(xiàng)。打開 project.clj 并修改其 dependencies 部分,如下所示:

(defproject simple-sample “0.1.0-SNAPSHOT”
description “FIXME: write description”
url “http://example.com/FIXME”
license {:name “Eclipse 公共許可證”
url “http://www.eclipse.org/legal/epl-v10.html”}
依賴項(xiàng) [[org.clojure/clojure “1.5.1”]
[opencv/opencv “2.4.7”] ;添加行
[opencv/opencv-本機(jī) “2.4.7”]]);添加行

請注意,Clojure 編程語言也是一個(gè) jar 工件。這就是 Clojure 被稱為托管語言的原因。

要驗(yàn)證一切是否正常,請發(fā)出 lein deps 任務(wù)。第一次運(yùn)行 lein 任務(wù)時(shí),在執(zhí)行任務(wù)本身之前,需要一些時(shí)間來下載所有必需的依賴項(xiàng)。

CD 簡單樣本
萊恩·德普斯
...

deps 任務(wù)從 project.clj 和 /.lein/profiles.clj 文件中讀取和合并 simple-sample 項(xiàng)目的所有依賴項(xiàng),并驗(yàn)證它們是否已緩存在本地 maven 存儲(chǔ)庫中。如果任務(wù)返回時(shí)沒有關(guān)于無法檢索兩個(gè)新工件的消息,則您的安裝是正確的,否則請返回并仔細(xì)檢查您是否正確執(zhí)行了所有操作。

使用 OpenCV 進(jìn)行 REPLING

現(xiàn)在 cd 在 simple-sample 目錄中并發(fā)出以下 lein 任務(wù):

CD 簡單樣本

萊恩·雷普爾

..

nREPL 服務(wù)器在主機(jī) 127.0.0.1 上的端口 50907 上啟動(dòng)

REPL-y 0.3.0 版本

Clojure 1.5.1 版本

文檔:(doc function-name-here)

(find-doc “部分名稱在這里”)

源:(source function-name-here)

Javadoc:(javadoc java-object-or-class-here)

退出:Ctrl+D 或(退出)或(退出)

結(jié)果:存儲(chǔ)在變量 *1、*2、*3 中,異常存儲(chǔ)在 *e 中

用戶=>

您可以通過發(fā)出任何要計(jì)算的 CLJ 表達(dá)式來立即與 REPL 進(jìn)行交互。

用戶=> (+ 41 1)

42

user=> (println “你好,OpenCV!”)

你好,OpenCV!

user=> (defn foo [] (str “bar”))

#'用戶/foo

用戶=> (foo)

“酒吧”

當(dāng)從基于 lein 的項(xiàng)目的主目錄運(yùn)行時(shí),即使 lein repl 任務(wù)自動(dòng)加載所有項(xiàng)目依賴項(xiàng),您仍然需要加載 opencv 本機(jī)庫才能與 OpenCV 交互。

user=> (clojure.lang.RT/loadLibrary org.opencv.core.Core/NATIVE_LIBRARY_NAME)

然后,您可以通過引用其類的完全限定名稱來開始與 OpenCV 交互。

注意

在這里,您可以找到完整的 OpenCV Java API。

user=> (org.opencv.core.Point. 0 0)

#<點(diǎn) {0.0, 0.0}>

在這里,我們創(chuàng)建了一個(gè)二維的 opencv Point 實(shí)例。即使 OpenCV 的 java 接口中包含的所有 java 包都可以立即從 CLJ REPL 獲得,在 Point 前面加上前綴也是非常煩人的。具有完全限定包名稱的實(shí)例構(gòu)造函數(shù)。

幸運(yùn)的是,CLJ 提供了一種非常簡單的方法,通過直接導(dǎo)入 Point 類來克服這種煩惱。

user=> (import 'org.opencv.core.Point)

org.opencv.core.Point(組織.opencv.core.Point)

user=> (def p1 (點(diǎn) 0 0))

#'用戶/p1

用戶=> p1

#<點(diǎn) {0.0, 0.0}>

user=> (def p2 (點(diǎn) 100 100))

#'用戶/p2

我們甚至可以檢查實(shí)例的類,并驗(yàn)證符號(hào)的值是否是 Point java 類的實(shí)例。

user=>(類 P1)

org.opencv.core.Point(組織.opencv.core.Point)

user=> (instance? org.opencv.core.Point p1)

如果我們現(xiàn)在想使用 opencv Rect 類來創(chuàng)建一個(gè)矩形,我們再次必須完全限定它的構(gòu)造函數(shù),即使它留在 Point 類的同一個(gè) org.opencv.core 包中。

user=> (org.opencv.core.Rect. p1, p2)

#<矩形 {0, 0, 100x100}>

同樣,CLJ 導(dǎo)入工具非常方便,可讓您一次映射更多符號(hào)。

user=> (import '[org.opencv.core 點(diǎn)矩形大小])

org.opencv.core.Size

user=> (def r1 (Rect. p1 p2))

#'用戶/r1

用戶=> r1

#<矩形 {0, 0, 100x100}>

user=>(類 R1)

org.opencv.core.Rect

user=> (instance? org.opencv.core.Rect r1)

user=>(大?。?00、100)

#<尺寸 100x100>

user=> (def sq-100 (大小 100 100))

#'用戶/sq-100

user=>(SQ-100 類)

org.opencv.core.Size

user=> (instance? org.opencv.core.Size sq-100)

顯然,您也可以在實(shí)例上調(diào)用方法。

用戶=> (.area r1)

10000.0

用戶=> (.area sq-100)

10000.0

或者修改成員字段的值。

user=> (set!(.x p1) 10)

10

用戶=> p1

#<點(diǎn) {10.0, 0.0}>

user=> (set?。?寬度 sq-100) 10)

10

user=> (set?。?高度 sq-100) 10)

10

用戶=> (.area sq-100)

100.0

如果您發(fā)現(xiàn)自己不記得 OpenCV 類的行為,REPL 讓您有機(jī)會(huì)輕松搜索相應(yīng)的 javadoc 文檔:

user=> (javadoc 矩形)

“http://www.google.com/search?btnI=I%27m%20Feeling%20Lucky&q=allinurl:org/opencv/core/Rect.html”

在 REPL 中模擬 OpenCV Java 教程示例

現(xiàn)在讓我們嘗試將?OpenCV Java 教程示例移植到 Clojure。我們將在 REPL 上對其進(jìn)行評估,而不是將其寫入源文件中。

以下是引用示例的原始 Java 源代碼。

導(dǎo)入 org.opencv.core.Mat;
導(dǎo)入 org.opencv.core.CvType;
導(dǎo)入 org.opencv.core.Scalar;
簡單示例 {
static{ System.loadLibrary(“opencv_java244”); }
公共靜態(tài)無效main(String[] args) {
墊子 m = 新墊子(5, 10, CvType.CV_8UC1, 標(biāo)量(0));
System.out.println(“OpenCV 墊子:” + m);
墊子 mr1 = m.row(1);
mr1.setTo(標(biāo)量(1));
墊子 mc5 = m.col(5);
mc5.setTo(標(biāo)量(5));
System.out.println(“OpenCV 墊數(shù)據(jù):\n” + m.dump());
}
}

向項(xiàng)目添加注入

在開始編碼之前,我們希望消除在啟動(dòng)新的 REPL 以交互方式加載原生 opencv 庫時(shí)與之交互的無聊需求。

首先,通過在 REPL 提示符下計(jì)算 (exit) 表達(dá)式來停止 REPL。

user=>(退出)
再見!

然后打開 project.clj 文件并按如下方式進(jìn)行編輯:

(defproject simple-sample “0.1.0-SNAPSHOT”
...
注入 [(clojure.lang.RT/loadLibrary org.opencv.core.Core/NATIVE_LIBRARY_NAME)])

在這里,我們說在運(yùn)行 REPL 時(shí)加載 opencv 本機(jī)庫,這樣我們就不必再記住手動(dòng)執(zhí)行。

重新運(yùn)行 lein repl 任務(wù)

萊恩·雷普爾
nREPL 服務(wù)器在主機(jī) 127.0.0.1 上的端口 51645 上啟動(dòng)
REPL-y 0.3.0 版本
Clojure 1.5.1 版本
文檔:(doc function-name-here)
(find-doc “部分名稱在這里”)
源:(source function-name-here)
Javadoc:(javadoc java-object-or-class-here)
退出:Ctrl+D 或(退出)或(退出)
結(jié)果:存儲(chǔ)在變量 *1、*2、*3 中,異常存儲(chǔ)在 *e 中
用戶=>

導(dǎo)入感興趣的 OpenCV java 接口。

user=> (import '[org.opencv.core Mat CvType 標(biāo)量])
org.opencv.core.標(biāo)量

我們將幾乎逐字逐句地模仿原始的 OpenCV java 教程:

  • 創(chuàng)建一個(gè) 5x10 矩陣,其所有元素都初始化為 0
  • 將第二行的每個(gè)元素的值更改為 1
  • 將第 6 列的每個(gè)元素的值更改為 5
  • 打印得到的矩陣的內(nèi)容
user=> (def m (Mat. 5 10 CvType/CV_8UC1 (Scalar. 0 0)))
#'用戶/m
用戶=> (def mr1 (.row m 1))
#'用戶/mr1
user=> (.setTo mr1 (標(biāo)量 1 0))
#<墊墊 [ 1*10*CV_8UC1, isCont=true, isSubmat=true, nativeObj=0x7fc9dac49880, dataAddr=0x7fc9d9c98d5a ]>
用戶=> (def mc5 (.col m 5))
#'用戶/mc5
user=> (.setTo mc5 (標(biāo)量 5 0))
#<Mat Mat [ 5*1*CV_8UC1, isCont=false, isSubmat=true, nativeObj=0x7fc9d9c995a0, dataAddr=0x7fc9d9c98d55 ]>
用戶=> (println (.dump m))
[0, 0, 0, 0, 0, 5, 0, 0, 0, 0;
1, 1, 1, 1, 1, 5, 1, 1, 1, 1;
0, 0, 0, 0, 0, 5, 0, 0, 0, 0;
0, 0, 0, 0, 0, 5, 0, 0, 0, 0;
0, 0, 0, 0, 0, 5, 0, 0, 0, 0]

如果你習(xí)慣了一種功能語言,那么所有那些被濫用和變異的名詞都會(huì)激怒你對動(dòng)詞的偏好。即使 CLJ 互操作語法非常方便和完整,任何 OOP 語言和任何 FP 語言(即 Scala 是一種混合范式編程語言)之間仍然存在阻抗不匹配。

要退出 REPL,請?jiān)?REPL 提示符下鍵入 (exit)、ctr-D 或 (quit)。

user=>(退出)
再見!

以交互方式加載和模糊圖像

在下一個(gè)示例中,您將學(xué)習(xí)如何使用以下 OpenCV 方法以交互方式從 REPL 加載、模糊和圖像:

  • Highgui 類中的 imread 靜態(tài)方法,用于從文件中讀取圖像
  • Highgui 類中的 imwrite 靜態(tài)方法,用于將圖像寫入文件
  • Imgproc 類中的 GaussianBlur 靜態(tài)方法,用于模糊原始圖像

我們還將使用 Mat 類,該類從 imread 方法返回并被接受為 GaussianBlur 和 imwrite 方法的主要參數(shù)。

將圖像添加到項(xiàng)目

首先,我們要將一個(gè)鏡像文件添加到新創(chuàng)建的目錄中,用于存儲(chǔ)項(xiàng)目的靜態(tài)資源。

使用 Clojure 進(jìn)行 OpenCV 開發(fā)簡介,opencv,人工智能,計(jì)算機(jī)視覺

mkdir -p 資源/圖像
cp ~/opt/opencv/doc/tutorials/introduction/desktop_java/images/lena.png resource/images/

閱讀圖片

現(xiàn)在像往常一樣啟動(dòng) REPL,然后從導(dǎo)入我們將要使用的所有 OpenCV 類開始:

萊恩·雷普爾
nREPL 服務(wù)器在主機(jī) 127.0.0.1 上的端口 50624 上啟動(dòng)
REPL-y 0.3.0 版本
Clojure 1.5.1 版本
文檔:(doc function-name-here)
(find-doc “部分名稱在這里”)
源:(source function-name-here)
Javadoc:(javadoc java-object-or-class-here)
退出:Ctrl+D 或(退出)或(退出)
結(jié)果:存儲(chǔ)在變量 *1、*2、*3 中,異常存儲(chǔ)在 *e 中
user=> (import '[org.opencv.core Mat Size CvType]
'[org.opencv.imgcodecs imgcodecs]
'[org.opencv.imgproc imgproc])
org.opencv.imgproc.Imgproc

現(xiàn)在從 resources/images/lena.png 文件中讀取圖像。

user=> (def lena (Highgui/imread “resources/images/lena.png”))
#'用戶/莉娜
用戶=> Lena
#<墊墊 [ 512*512*CV_8UC3, isCont=true, isSubmat=false, nativeObj=0x7f9ab3054c40, dataAddr=0x19fea9010 ]>

如您所見,通過簡單地計(jì)算 lena 符號(hào),我們知道 lena.png 是一個(gè) 512x512 的 CV_8UC3 元素類型的矩陣。讓我們創(chuàng)建一個(gè)具有相同尺寸和元素類型的新 Mat 實(shí)例。

user=> (def blurred (Mat. 512, 512 CvType/CV_8UC3))
#'用戶/模糊
用戶=>

現(xiàn)在應(yīng)用 GaussianBlur 過濾器,使用 lena 作為源矩陣,blurred 作為目標(biāo)矩陣。

user=> (Imgproc/GaussianBlur lena blurred (Size. 5, 5), 3, 3)

最后一步,只需將模糊的矩陣保存在新的圖像文件中即可。

user=> (Highgui/imwrite “resources/images/blurred.png” blured)
user=>(退出)
再見!

以下是莉娜的新模糊圖像。

使用 Clojure 進(jìn)行 OpenCV 開發(fā)簡介,opencv,人工智能,計(jì)算機(jī)視覺

后續(xù)步驟

本教程僅介紹在 CLJ REPL 中設(shè)置的非?;镜沫h(huán)境,以便能夠與 OpenCV 進(jìn)行交互。

我建議任何 Clojure 新手閱讀 Clojure Java?Interop 一章,以獲得與任何未包裝在 Clojure 中的純 Java 庫進(jìn)行互操作所需的所有知識(shí),以使其在 Clojure 中以更慣用和功能化的方式使用。

OpenCV Java API 不會(huì)根據(jù) Qt 封裝 highgui 模塊功能(例如 namedWindow 和 imshow.如果您想創(chuàng)建窗口并在從 REPL 與 OpenCV 交互時(shí)將圖像顯示在其中,那么目前您只能自己動(dòng)手。你可以使用 Java Swing 來填補(bǔ)這個(gè)空白。

???在線教程

  • 麻省理工學(xué)院人工智能視頻教程?– 麻省理工人工智能課程
  • 人工智能入門?– 人工智能基礎(chǔ)學(xué)習(xí)。Peter Norvig舉辦的課程
  • EdX 人工智能?– 此課程講授人工智能計(jì)算機(jī)系統(tǒng)設(shè)計(jì)的基本概念和技術(shù)。
  • 人工智能中的計(jì)劃?– 計(jì)劃是人工智能系統(tǒng)的基礎(chǔ)部分之一。在這個(gè)課程中,你將會(huì)學(xué)習(xí)到讓機(jī)器人執(zhí)行一系列動(dòng)作所需要的基本算法。
  • 機(jī)器人人工智能?– 這個(gè)課程將會(huì)教授你實(shí)現(xiàn)人工智能的基本方法,包括:概率推算,計(jì)劃和搜索,本地化,跟蹤和控制,全部都是圍繞有關(guān)機(jī)器人設(shè)計(jì)。
  • 機(jī)器學(xué)習(xí)?– 有指導(dǎo)和無指導(dǎo)情況下的基本機(jī)器學(xué)習(xí)算法
  • 機(jī)器學(xué)習(xí)中的神經(jīng)網(wǎng)絡(luò)?– 智能神經(jīng)網(wǎng)絡(luò)上的算法和實(shí)踐經(jīng)驗(yàn)
  • 斯坦福統(tǒng)計(jì)學(xué)習(xí)

有需要的小伙伴,可以點(diǎn)擊下方鏈接免費(fèi)領(lǐng)取或者V掃描下方二維碼免費(fèi)領(lǐng)取??
?

使用 Clojure 進(jìn)行 OpenCV 開發(fā)簡介,opencv,人工智能,計(jì)算機(jī)視覺

使用 Clojure 進(jìn)行 OpenCV 開發(fā)簡介,opencv,人工智能,計(jì)算機(jī)視覺

人工智能書籍

  • OpenCV(中文版).(布拉德斯基等)
  • OpenCV+3計(jì)算機(jī)視覺++Python語言實(shí)現(xiàn)+第二版
  • OpenCV3編程入門 毛星云編著
  • 數(shù)字圖像處理_第三版
  • 人工智能:一種現(xiàn)代的方法
  • 深度學(xué)習(xí)面試寶典
  • 深度學(xué)習(xí)之PyTorch物體檢測實(shí)戰(zhàn)
  • 吳恩達(dá)DeepLearning.ai中文版筆記
  • 計(jì)算機(jī)視覺中的多視圖幾何
  • PyTorch-官方推薦教程-英文版
  • 《神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)》(邱錫鵬-20191121)

  • 使用 Clojure 進(jìn)行 OpenCV 開發(fā)簡介,opencv,人工智能,計(jì)算機(jī)視覺

第一階段:零基礎(chǔ)入門(3-6個(gè)月)

新手應(yīng)首先通過少而精的學(xué)習(xí),看到全景圖,建立大局觀。?通過完成小實(shí)驗(yàn),建立信心,才能避免“從入門到放棄”的尷尬。因此,第一階段只推薦4本最必要的書(而且這些書到了第二、三階段也能繼續(xù)用),入門以后,在后續(xù)學(xué)習(xí)中再“哪里不會(huì)補(bǔ)哪里”即可。

使用 Clojure 進(jìn)行 OpenCV 開發(fā)簡介,opencv,人工智能,計(jì)算機(jī)視覺

第二階段:基礎(chǔ)進(jìn)階(3-6個(gè)月)

熟讀《機(jī)器學(xué)習(xí)算法的數(shù)學(xué)解析與Python實(shí)現(xiàn)》并動(dòng)手實(shí)踐后,你已經(jīng)對機(jī)器學(xué)習(xí)有了基本的了解,不再是小白了。這時(shí)可以開始觸類旁通,學(xué)習(xí)熱門技術(shù),加強(qiáng)實(shí)踐水平。在深入學(xué)習(xí)的同時(shí),也可以探索自己感興趣的方向,為求職面試打好基礎(chǔ)。

使用 Clojure 進(jìn)行 OpenCV 開發(fā)簡介,opencv,人工智能,計(jì)算機(jī)視覺

第三階段:工作應(yīng)用

使用 Clojure 進(jìn)行 OpenCV 開發(fā)簡介,opencv,人工智能,計(jì)算機(jī)視覺

這一階段你已經(jīng)不再需要引導(dǎo),只需要一些推薦書目。如果你從入門時(shí)就確認(rèn)了未來的工作方向,可以在第二階段就提前閱讀相關(guān)入門書籍(對應(yīng)“商業(yè)落地五大方向”中的前兩本),然后再“哪里不會(huì)補(bǔ)哪里”。

?有需要的小伙伴,可以點(diǎn)擊下方鏈接免費(fèi)領(lǐng)取或者V掃描下方二維碼免費(fèi)領(lǐng)取??
?

使用 Clojure 進(jìn)行 OpenCV 開發(fā)簡介,opencv,人工智能,計(jì)算機(jī)視覺

使用 Clojure 進(jìn)行 OpenCV 開發(fā)簡介,opencv,人工智能,計(jì)算機(jī)視覺

使用 Clojure 進(jìn)行 OpenCV 開發(fā)簡介,opencv,人工智能,計(jì)算機(jī)視覺文章來源地址http://www.zghlxwxcb.cn/news/detail-793714.html

到了這里,關(guān)于使用 Clojure 進(jìn)行 OpenCV 開發(fā)簡介的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 04- OpenCV:Mat對象簡介和使用

    04- OpenCV:Mat對象簡介和使用

    目錄 1、Mat對象與IplImage對象 2、Mat對象使用 3、Mat定義數(shù)組 4、相關(guān)的代碼演示 1、Mat對象與IplImage對象 先看看Mat對象:圖片在計(jì)算機(jī)眼里都是一個(gè)二維數(shù)組; 在OpenCV中, Mat 是一個(gè)非常重要的類,用于表示圖像或矩陣數(shù)據(jù)。 (1)Mat對象OpenCV2.0之后引進(jìn)的圖像數(shù)據(jù)結(jié)構(gòu)、 自動(dòng)

    2024年01月20日
    瀏覽(21)
  • OpenCV學(xué)習(xí)筆記 使用OpenCV進(jìn)行人臉交換

    ? ? ? ? 首先說換臉這件事情,已經(jīng)可以算是有一丟丟古老的技術(shù)了,基于OpenCV進(jìn)行人臉交換的好處在于簡單,壞處在于無法復(fù)刻表情。如果想要比較完美的可以去找deepfakes相關(guān)技術(shù),如果想要對臉部進(jìn)行一些自定義操作,那么了解OpenCV換臉涉及到的技術(shù)點(diǎn)還是有價(jià)值的。

    2024年03月11日
    瀏覽(20)
  • 【OpenCV實(shí)現(xiàn)圖像:使用OpenCV進(jìn)行物體輪廓排序】

    【OpenCV實(shí)現(xiàn)圖像:使用OpenCV進(jìn)行物體輪廓排序】

    在圖像處理中,經(jīng)常需要進(jìn)行與物體輪廓相關(guān)的操作,比如計(jì)算目標(biāo)輪廓的周長、面積等。為了獲取目標(biāo)輪廓的信息,通常使用OpenCV的findContours函數(shù)。然而,一旦獲得輪廓信息后,可能會(huì)發(fā)現(xiàn)輪廓的順序是無序的,如下圖左側(cè)所示: 在這個(gè)圖中,每個(gè)輪廓都被找到,但它們的

    2024年02月03日
    瀏覽(26)
  • Opencv 基礎(chǔ)(四):使用OpenCV進(jìn)行圖像旋轉(zhuǎn)和平移

    Opencv 基礎(chǔ)(四):使用OpenCV進(jìn)行圖像旋轉(zhuǎn)和平移

    如今,圖像編輯變得越來越流行,因?yàn)槭謾C(jī)有內(nèi)置的功能,可以讓你 裁剪、旋轉(zhuǎn) 和更多的操作你的圖像。 這篇文章中,我們將探索和學(xué)習(xí)這些圖像編輯技術(shù)。具體來說,我們將學(xué)習(xí)如何: 旋轉(zhuǎn)圖像 移動(dòng)圖像 圖像旋轉(zhuǎn)和平移是圖像編輯中最基本的操作之一。兩者都屬于廣義的

    2024年02月05日
    瀏覽(24)
  • OpenCV實(shí)戰(zhàn)之一 | 使用OpenCV進(jìn)行圖像超分辨率

    OpenCV實(shí)戰(zhàn)之一 | 使用OpenCV進(jìn)行圖像超分辨率

    前言 圖像超分辨率(Image Super-Resolution,簡稱ISR)是一種圖像處理技術(shù),將 低分辨率的圖像通過算法轉(zhuǎn)換成高分辨率圖像 ,從而增加圖像的細(xì)節(jié)和清晰度。 ISR技術(shù)對于許多計(jì)算機(jī)視覺和圖像處理任務(wù)都是至關(guān)重要的,如圖像重建、監(jiān)視、醫(yī)學(xué)圖像處理等。 ? 注意的是模型的

    2024年02月01日
    瀏覽(20)
  • 【OpenCV實(shí)現(xiàn)圖像:使用OpenCV進(jìn)行圖像處理之透視變換】

    【OpenCV實(shí)現(xiàn)圖像:使用OpenCV進(jìn)行圖像處理之透視變換】

    透視變換(Perspective Transformation)是一種圖像處理中常用的變換手段,它用于將圖像從一個(gè)視角映射到另一個(gè)視角,常被稱為投影映射。透視變換可以用于矯正圖像中的透視畸變,使得圖像中的物體在新的視平面上呈現(xiàn)更加規(guī)則的形狀。 透視變換通常涉及到尋找圖像中的特定

    2024年02月03日
    瀏覽(30)
  • 使用opencv進(jìn)行圖片分析

    使用opencv進(jìn)行圖片分析

    配置opencv 在你的任意一個(gè)盤里創(chuàng)建一個(gè)專屬于opencv的文件夾便于學(xué)習(xí)與整理 打開控制臺(tái)win+r輸入cmd,進(jìn)入后輸入 conda activate opencv ,進(jìn)入環(huán)境以后進(jìn)入你所設(shè)置的opencv文件的盤,我的是D盤,所以輸入 d: ,再輸入 cd \\\"opencv\\\" ,然后輸入 jupyter lab 啟動(dòng)編譯器 (OS:如果需要提交作

    2024年03月24日
    瀏覽(16)
  • 使用opencv進(jìn)行文本增強(qiáng)

    文本增強(qiáng): 1.首先,使用?cv2.imread()?函數(shù)以灰度模式讀取圖像文件,并將其存儲(chǔ)在變量?image?中。 2.然后,使用?cv2.threshold()?函數(shù)對圖像進(jìn)行二值化處理,使用 Otsu\\\'s 閾值法自動(dòng)確定閾值,并將結(jié)果存儲(chǔ)在變量?binary_image?中。 3.接下來,創(chuàng)建一個(gè) 3x3 的方形結(jié)構(gòu)元素,并使用

    2024年02月12日
    瀏覽(18)
  • 使用 OpenCV 進(jìn)行相機(jī)校準(zhǔn)

    使用 OpenCV 進(jìn)行相機(jī)校準(zhǔn)

    相機(jī)已經(jīng)存在了很長時(shí)間。然而,隨著 20 世紀(jì)后期廉價(jià)針 孔 相機(jī)的推出,它們在我們的日常生活中變得司空見慣。不幸的是,這種廉價(jià)是有代價(jià)的:嚴(yán)重的失真。幸運(yùn)的是,這些是常數(shù),通過校準(zhǔn)和一些重新映射,我們可以糾正這一點(diǎn)。此外,通過校準(zhǔn),您還可以確定相機(jī)

    2024年04月12日
    瀏覽(31)
  • 使用openCV進(jìn)行圖像處理

    使用 openCV進(jìn)行圖像處理,又名:學(xué)習(xí)計(jì)算機(jī)視覺理論,做 demo(第3 天) 目錄 2.1 圖像模糊 2.1.1 均值濾波 2.1.2 中值濾波 2.1.3 高斯濾波 2.1.4 案例實(shí)現(xiàn) 2.2 圖像銳化 2.2.1 圖像銳化簡介 2.2.2 案例實(shí)現(xiàn) 3.1 OpenCV繪圖 3.1.1 使用OpenCV繪制各種圖形 3.1.2 案例實(shí)現(xiàn) 3.2 圖像的幾何變換 3.2.1 幾

    2024年01月22日
    瀏覽(53)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包