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

OpenCV.js 入門教程指北:下載/安裝/編譯/代碼實(shí)現(xiàn)/運(yùn)行 一條龍

這篇具有很好參考價(jià)值的文章主要介紹了OpenCV.js 入門教程指北:下載/安裝/編譯/代碼實(shí)現(xiàn)/運(yùn)行 一條龍。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

官方文檔信息

學(xué)習(xí)計(jì)算機(jī)視覺接觸到的第一個(gè)庫,非常有意思的是,竟然有JS的版本

這是官方文檔:https://docs.opencv.org/3.3.1/d5/d10/tutorial_js_root.html

為了節(jié)省大家的時(shí)間,我這里對(duì)官方的介紹簡單摘要一些:

OpenCV supports a wide variety of programming languages such as C++, Python, and Java, and is available on different platforms including Windows, Linux, OS X, Android, and iOS. Interfaces for high-speed GPU operations based on CUDA and OpenCL are also under active development. OpenCV.js brings OpenCV to the open web platform and makes it available to the JavaScript programmer…
Emscripten is an LLVM-to-JavaScript compiler. It takes LLVM bitcode - which can be generated from C/C++ using clang, and compiles that into asm.js or WebAssembly that can execute directly inside the web browsers…

翻譯:

OpenCV 支持多種編程語言,例如 C++、Python 和 Java,并且可在各種平臺(tái)上運(yùn)行,包括 Windows、Linux、OS X、Android 和 iOS。針對(duì)基于 CUDA 和 OpenCL 的高速 GPU 操作的接口也正處于積極開發(fā)之中。OpenCV.js 則將 OpenCV 引入開放網(wǎng)絡(luò)平臺(tái),使其可供 JavaScript 程序員使用…
Emscripten 是一款 LLVM 至 JavaScript 的編譯器。它接受 LLVM 位碼作為輸入,該位碼可以通過 clang 工具從 C/C++ 代碼生成,并進(jìn)一步將這些位碼編譯為 asm.js 或 WebAssembly,這兩種格式均能在現(xiàn)代網(wǎng)絡(luò)瀏覽器內(nèi)部直接執(zhí)行…

Emscripten:神奇的編譯器

根據(jù)上文我們可以得知,這里是需要用 Emscripten 把 OpenCV 編譯為 OpenCV.js
如果你不希望自己手動(dòng)完成整個(gè)編譯過程,可以跳過這幾個(gè)章節(jié),直接到《直接獲取編譯產(chǎn)物》部分

ASM.js 與 WebAssembly

  1. ASM.js
    簡單來說,ASM.js 是一位名叫 Alon Zakai 的博士發(fā)明的,初衷只是為了讓自己喜歡的游戲能夠在 Web 環(huán)境運(yùn)行。
    他為此發(fā)明了一種工具叫做 Enscripten,是一個(gè) LLVM 工具鏈,能夠把 C/C++ 代碼編譯為 JS,同時(shí)為了保證性能,這種 JS 被加上了一些特定的限制,也就成了 ASM.js。
  2. WebAssembly
    后來,Mozilla、Google 之類的瀏覽器廠商也注意到了 ASM.js,受其啟發(fā),最終做出了 WebAssembly。

詳情請(qǐng)參考:https://ruanyifeng.com/blog/2017/09/asmjs_emscripten.html

下載 Emscripten 并配置環(huán)境

要使用 Emscripten 產(chǎn)生 wasm 的第一步則是:

To Install Emscripten, follow instructions of Emscripten SDK.

注意,在安裝之前,需要注意系統(tǒng)兼容性,這里看看對(duì)Windows的要求:

Instead of running emscripten on Windows directly, you can use the Windows Subsystem for Linux(WSL) to run it in a Linux environment.

我們安裝一個(gè) WSL 再去做下一步。
OpenCV.js 入門教程指北:下載/安裝/編譯/代碼實(shí)現(xiàn)/運(yùn)行 一條龍,opencv,javascript,人工智能,計(jì)算機(jī)視覺,wasm,webassembly,前端

安裝好之后的步驟就是:
1. 拉取源碼倉庫并進(jìn)入

git clone https://github.com/emscripten-core/emsdk.git
cd emsdk

2. 更新源碼(剛剛clone過的話就不用走這一步了)

git pull

3. 下載安裝 SDK 并啟用(非常容易失敗,多試億次就好)

./emsdk install latest
./emsdk activate latest

4. 設(shè)置環(huán)境變量,并檢測(cè)是否設(shè)置成功(如果設(shè)置失敗可以跳過這一步,采取下述的其他方案)

source ./emsdk_env.sh
echo ${EMSCRIPTEN} // 如果輸出了非空的值,那么就成功了

windows下改為運(yùn)行 bat 腳本,但是還是可能報(bào)錯(cuò)(報(bào)錯(cuò)請(qǐng)看下方的一些分析)

如果出現(xiàn)異常,那么請(qǐng)按照下方的提示自行排查??:

  1. 請(qǐng)仔細(xì)看命令結(jié)束后提示的信息,確保第1-3步真的運(yùn)行成功了
  2. 請(qǐng)確保網(wǎng)絡(luò)暢通
  3. 檢查WSL是否安裝 bzip2、cmake 等
  4. 請(qǐng)確保正確配置了環(huán)境變量;如果沒有配置成功的話,后續(xù)也可以手動(dòng)指定 emscripten 的路徑,這將在下一章節(jié)中提及。

之后每次版本更新,都得git拉取最新的代碼然后走上面的步驟進(jìn)行編譯。
這里似乎有點(diǎn)麻煩,或許可以封裝一個(gè)腳本去簡化上述流程。

下載 OpenCV 并編譯

繼續(xù)按照官方文檔教的做就好:
1. 下載OpenCV源碼

git clone https://github.com/opencv/opencv.git

2. 打包構(gòu)建,并把產(chǎn)物放到 build_js 目錄下(注意需要 python3.6+ 和 cmake)
這里默認(rèn)是打包為 asm.js, 如果要打包為 wasm 則需要在末尾加上 --build_wasm 參數(shù)

cd opencv
python3 ./platforms/js/build_js.py build_js

如果之前沒有配置emscripten的環(huán)境變量,則現(xiàn)在需要手動(dòng)指定,即把上面第二條指令換成這個(gè):

python3 ./platforms/js/build_js.py --emscripten_dir ../emsdk/upstream/emscripten build_js

如果上述過程沒有發(fā)生報(bào)錯(cuò),那么之后就進(jìn)入到漫長的編譯測(cè)試流程(我這里用了一個(gè)小時(shí)左右)…

引入并使用 OpenCV.js

還是比較簡單,直接當(dāng)一個(gè)UMD模塊進(jìn)入就好了

<script src="./opencv.js" type="text/javascript"></script>

直接獲取編譯產(chǎn)物

  1. 上述過程得到的產(chǎn)物,可以直接在我的 Github 獲?。?/li>

https://github.com/CoderSerio/opencv.js

  1. 官方編譯好的產(chǎn)物:

https://docs.opencv.org/4.8.0/opencv.js

其中4.8.0是手動(dòng)指定的版本,可以根據(jù)需要進(jìn)行修改,推薦下載到本地使用

使用 OpenCV.js

在瀏覽器中使用

代碼實(shí)現(xiàn)

這里我們將編譯產(chǎn)物opencv.js復(fù)制到我們的 web 項(xiàng)目中,然后編寫一個(gè)像下面這樣的 html 啟動(dòng)一個(gè)本地服務(wù)器:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>Hello OpenCV.js</title>
    <style>
      .content {
        display: flex;
      }
      .content > .inputoutput {
        border: 1px solid #000;
      }
    </style>
  </head>
  <body>
    <h2>Hello OpenCV.js</h2>
    <p id="status">OpenCV.js is loading...</p>
    <div class="content">
      <div class="inputoutput">
        <img id="imageSrc" alt="No Image" />
        <div class="caption">
          imageSrc <input type="file" id="fileInput" name="file" />
        </div>
      </div>
      <div class="inputoutput">
        <canvas id="canvasOutput"></canvas>
        <div class="caption">canvasOutput</div>
      </div>
    </div>
    <script type="text/javascript">
      async function onOpenCvReady() {
        if (cv instanceof Promise) {
          cv = await cv;
          console.log(cv.Mat);
          console.log(cv.matFromArray);
        }
        const imgElement = document.getElementById("imageSrc");
        const inputElement = document.getElementById("fileInput");
        imgElement.onload = function () {
          const src = cv.imread(imgElement); // 讀入圖片,格式是一個(gè)矩陣
          const dst = new cv.Mat(); // 新的矩陣
          cv.cvtColor(src, dst, cv.COLOR_RGBA2GRAY, 0); // 寫入新的矩陣并做灰度處理
          cv.imshow("canvasOutput", dst); // 將內(nèi)容輸出到一個(gè) canvas 上
          src.delete();
          dst.delete();
        };
        inputElement.addEventListener(
          "change",
          (e) => {
            imgElement.src = URL.createObjectURL(e.target.files[0]);
          },
          false
        );
      }
      var Module = {
        // https://emscripten.org/docs/api_reference/module.html#Module.onRuntimeInitialized
        onRuntimeInitialized() {
          document.getElementById("status").innerHTML = "OpenCV.js is ready.";
        },
      };
    </script>
    <script src="./opencv.js" onload="onOpenCvReady();"></script>
  </body>
</html>
運(yùn)行效果

啟動(dòng)后的效果:
OpenCV.js 入門教程指北:下載/安裝/編譯/代碼實(shí)現(xiàn)/運(yùn)行 一條龍,opencv,javascript,人工智能,計(jì)算機(jī)視覺,wasm,webassembly,前端
使用效果如下:
OpenCV.js 入門教程指北:下載/安裝/編譯/代碼實(shí)現(xiàn)/運(yùn)行 一條龍,opencv,javascript,人工智能,計(jì)算機(jī)視覺,wasm,webassembly,前端

在 Node.js 中使用

在 WSL 中安裝 Node

接下來的過程仍然會(huì)在 WSL 中進(jìn)行,所以這里需要現(xiàn)在 WSL 中安裝 NODE
考慮到網(wǎng)絡(luò)不穩(wěn)定,安裝 nvm 的過程可以用下面這個(gè)命令來替代:

git clone https://gitee.com/mirrors/nvm.git ~/.nvm && cd ~/.nvm && git checkout git describe --abbrev=0 --tags

clone 完這個(gè)庫之后,在里面能夠找到一個(gè) install.sh,執(zhí)行即可
如果執(zhí)行失敗,也可以參考下文手動(dòng)配置環(huán)境(如果之前你已經(jīng)安裝過了,那么可以試試直接執(zhí)行第 3 步):

1.打開環(huán)境配置文件(這里我用的 bash,所以在 bashrc 中

vim ~/.bashrc

2. 文件末尾寫入內(nèi)容

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

3. 刷新 WSL 的環(huán)境配置

source .bashrc (如果已經(jīng)配置過了,那么直接填之前的bashrc路徑即可)
代碼實(shí)現(xiàn)與在瀏覽器中基本一致,細(xì)節(jié)可以參閱上文中提到的官方文檔。
代碼實(shí)現(xiàn)和運(yùn)行效果

代碼實(shí)現(xiàn)與在瀏覽器中基本一致,細(xì)節(jié)可以參閱上文中提到的官方文檔,此處不再贅述。文章來源地址http://www.zghlxwxcb.cn/news/detail-860710.html

到了這里,關(guān)于OpenCV.js 入門教程指北:下載/安裝/編譯/代碼實(shí)現(xiàn)/運(yùn)行 一條龍的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • Linux安裝Elasticsearch(手把手入門教程及下載資源)

    Linux安裝Elasticsearch(手把手入門教程及下載資源)

    介紹Elasticsearch: 分布式,無需人工搭建集群(solr就需要人為配置,使用Zookeeper作為注冊(cè)中心) Restful風(fēng)格,一切API都遵循Rest原則,容易上手 近實(shí)時(shí)搜索,數(shù)據(jù)更新在Elasticsearch中幾乎是完全同步的 官網(wǎng)地址 點(diǎn)擊進(jìn)入官網(wǎng)點(diǎn)擊去體驗(yàn) 下拉找到該模塊點(diǎn)擊下載 選擇系統(tǒng)類型,點(diǎn)

    2023年04月08日
    瀏覽(21)
  • nginx(NGINX)詳細(xì)下載安裝及使用教程(非常適合入門)

    nginx(NGINX)詳細(xì)下載安裝及使用教程(非常適合入門)

    文章目錄 目錄 前言 一、如何下載 1.打開nginx官網(wǎng) 2.點(diǎn)擊下載 ?編輯?3.選擇穩(wěn)定版本(windows)?編輯 ?4.然后就是解析安裝到指定目錄下 二、啟動(dòng)nginx服務(wù)器 1.啟動(dòng)服務(wù)器 2、再是查看任務(wù)進(jìn)程是否存在,dos或打開任務(wù)管理器都行 ?3、最后一步是打開我們的瀏覽器訪問剛才的

    2024年02月16日
    瀏覽(20)
  • 【OpenCV入門教程Java版之一】安裝OpenCV:OpenCV4.6.0+IDEA開發(fā)環(huán)境配置

    【OpenCV入門教程Java版之一】安裝OpenCV:OpenCV4.6.0+IDEA開發(fā)環(huán)境配置

    在讀研期間的研究方向與圖像處理有一點(diǎn)相關(guān),后來由于工作可能會(huì)有需要,所以晚上回去也閉門研究了OpenCV和圖像處理相關(guān)的知識(shí)。也準(zhǔn)備寫一個(gè)OpenCV系列的專欄作為自己的學(xué)習(xí)筆記,也分享給大家,如果有寫錯(cuò)的地方也歡迎大家及時(shí)指出。 好了這篇文章作為OpenCV系列的第

    2024年02月09日
    瀏覽(22)
  • Github Desktop 下載、安裝、漢化和卸載(新手入門使用教程)

    Github Desktop 下載、安裝、漢化和卸載(新手入門使用教程)

    打開GitHub Desktop官網(wǎng)https://desktop.github.com/ 點(diǎn)擊 download for Windows(64bit),下載 GitHub Desktop 啟動(dòng)安裝 雙擊下載好的安裝包,啟動(dòng)安裝 安裝進(jìn)度 顯示安裝進(jìn)度頁面,稍微耐心等等,頁面消失即安裝完成 GithubDesktopZhTool為GitHubDesktop漢化工具。 注:遇到漢化失敗,重試一下子。 意

    2024年04月17日
    瀏覽(23)
  • 最新Visual Studio下載安裝以及C語言環(huán)境搭建教程(含C語言入門教程)

    最新Visual Studio下載安裝以及C語言環(huán)境搭建教程(含C語言入門教程)

    最新Visual Studio下載安裝以及C語言環(huán)境搭建教程來啦!一起來看看吧~ C語言是一種高級(jí)編程語言,由美國貝爾實(shí)驗(yàn)室的Dennis Ritchie于1972年發(fā)明,它是Unix操作系統(tǒng)的核心語言。C語言以其簡潔、高效和可移植性在計(jì)算機(jī)編程領(lǐng)域得到廣泛應(yīng)用,成為了當(dāng)今最為流行的編程語言之一

    2024年02月02日
    瀏覽(36)
  • 【保姆級(jí)圖文教程】QT下載、安裝、入門、配置VS Qt環(huán)境

    【保姆級(jí)圖文教程】QT下載、安裝、入門、配置VS Qt環(huán)境

    QT 是一個(gè)跨平臺(tái)的應(yīng)用程序開發(fā)框架,它提供了豐富的工具和類庫,用于開發(fā)圖形用戶界面(GUI)程序。Qt 提供了 C++ 編程語言接口,同時(shí)也支持其他編程語言,如 Python和QML。 以下是 QT 的一些主要特點(diǎn): 跨平臺(tái):Qt 支持在多個(gè)操作系統(tǒng)上進(jìn)行開發(fā),包括 Windows、macOS、Linux、

    2024年01月17日
    瀏覽(27)
  • JDK20下載+安裝+環(huán)境配置入門教程(非常詳細(xì)),從零基礎(chǔ)入門到精通,看完這一篇就夠了(附安裝包)

    JDK20下載+安裝+環(huán)境配置入門教程(非常詳細(xì)),從零基礎(chǔ)入門到精通,看完這一篇就夠了(附安裝包)

    軟件下載 軟件:JDK 版本:20 語言:簡體中文 大?。?59.60M 安裝環(huán)境:Win7及以上版本;64位操作系統(tǒng) 硬件要求:CPU@2.0GHz ;內(nèi)存@4G(或更高) 下載通道①百度網(wǎng)盤丨64位下載鏈接: https://pan.baidu.com/s/1AbHK3yqFHhlxb1VX1LnJ7g?pwd=6789 提取碼:6789 1、 軟件介紹 2,切換Windows系統(tǒng),然后點(diǎn)

    2024年02月08日
    瀏覽(29)
  • PhpStudy下載安裝使用教程,圖文教程(非常詳細(xì))從零基礎(chǔ)入門到精通,看完這一篇就夠了。

    PhpStudy下載安裝使用教程,圖文教程(非常詳細(xì))從零基礎(chǔ)入門到精通,看完這一篇就夠了。

    一、官網(wǎng)下載 二、安裝 三、簡單使用 PhpStudy:讓天下沒有難配的服務(wù)器環(huán)境。 學(xué)習(xí)網(wǎng)絡(luò)安全經(jīng)常需要搭建各種各樣的Web環(huán)境,而PphStudy(簡稱“小皮”)可以一鍵搭建環(huán)境,節(jié)省下載、配置環(huán)境的時(shí)間。 1)訪問PhpStudy官網(wǎng): https://www.xp.cn/ 2)【首頁】選擇Windows版。 3)跳轉(zhuǎn)

    2024年02月02日
    瀏覽(43)
  • PyCharm下載安裝教程(超詳細(xì)),從零基礎(chǔ)入門到精通,從這篇開始

    PyCharm下載安裝教程(超詳細(xì)),從零基礎(chǔ)入門到精通,從這篇開始

    1、Pycharm 簡介 2、Pycharm下載 3、環(huán)境變量的配置 4、Pycharm的使用 PyCharm是一種Python IDE(Integrated Development Environment,集成開發(fā)環(huán)境),帶有一整套可以幫助用戶在使用Python語言開發(fā)時(shí)提高其效率的工具,比如調(diào)試、語法高亮、項(xiàng)目管理、代碼跳轉(zhuǎn)、智能提示、自動(dòng)完成、單元測(cè)

    2024年02月11日
    瀏覽(22)
  • Rocky Linux 9.0 版本小白入門下載安裝使用調(diào)優(yōu)超詳細(xì)教程

    Rocky Linux 9.0 版本小白入門下載安裝使用調(diào)優(yōu)超詳細(xì)教程

    本期給大家?guī)淼氖莚ocky Linux 9.0 版本的下載安裝教程,首先rocky Linux 9.0版本是2022.7.14發(fā)布的,我剛發(fā)布第二天下載使用的,總體感覺比之前更好一些,例如壁紙、桌面環(huán)境等,然后就是軟件設(shè)施基礎(chǔ)準(zhǔn)備好:VMware、XShell(可忽略,別的遠(yuǎn)程軟件也可以),然后接下來我們就看

    2024年02月05日
    瀏覽(23)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包