Python安裝Jupyter Notebook配置使用教程

原文見:https://blog.csdn.net/qq_27825451/article/details/84427269

一、什么是jupyter

1、簡介:

jupyter notebook是一種 Web 應用,能讓用戶將說明文本、數學方程、代碼和可視化內容全部組合到一個易于共享的文檔中。它可以直接在代碼旁寫出敘述性文檔,而不是另外編寫單獨的文檔。也就是它可以能將代碼、文檔等這一切集中到一處,讓用戶一目了然。

Jupyter這個名字是它要服務的三種語言的縮寫:Julia,PYThon和R,這個名字與“木星(jupiter)”諧音。Jupyter Notebook 已迅速成為數據分析,機器學習的必備工具。因為它可以讓數據分析師集中精力向用戶解釋整個分析過程。我們可以通過Jupyter notebook寫出了我們的學習筆記。但是jupyter遠遠不止支持上面的三種語言,目前能夠使用的語言他基本上都能支持,包括C、C++、C#,java、Go等等。

jupyter notebook和我們前面所講的兩篇系列文章ipython其實都是來自同一個產品族,它的前身叫做ipython notebook,至于后面為什么更名這不得而知,這也就是為什么很多文章總是默認將ipython就說成是ipython notebook的原因了。但是既然已經更名了,我們還是區別對待ipython和jupyter notebook。

2、安裝與打開

安裝這里就不說了,使用過anaconda的人都清楚,在安裝anaconda的時候會一起打包安裝,如果想要自己安裝,可以通過pip或者是conda安裝,

怎么打開也很簡單,可以直接在anaconda的菜單里面打開jupyter notebook,也可以通過命令行,輸入jupyter notebook或者是jupyter-notebook都可以。

我們說了,jupyter notebook會在瀏覽器中中打開,是一種Web應用,故而有web路徑和端口號了,我的打開之后,在瀏覽器的地址欄會顯示如下:

http://localhost:8888/tree

當一次打開多個jupyter notebook的時候,端口號會依次遞增8889,8890依次遞增。

3、jupyter的作用

前面說了一大堆,也不清楚jupyter到底有啥好的啊,到底有一些什么功能呢?

在介紹 Jupyter Notebook 的功能之前,讓我們先來看一個概念:文學編程 ( Literate programming ),這是由 Donald Knuth 提出的編程方法。傳統的結構化編程,人們需要按計算機的邏輯順序來編寫代碼;與此相反,文學編程則可以讓人們按照自己的思維邏輯來開發程序。

簡單來說,文學編程的讀者不是機器,而是人。 我們從寫出讓機器讀懂的代碼,過渡到向人們解說如何讓機器實現我們的想法,其中除了代碼,更多的是敘述性的文字、圖表等內容。這么一看,這不正是數據分析人員所需要的編碼風格么?不僅要當好一個程序員,還得當好一個作家。那么 Jupyter Notebook 就是不可或缺的一款集編程和寫作于一體的效率工具。

以下列舉了 Jupyter Notebook 的眾多優點:

(1)極其適合數據分析,想象一下如下混亂的場景:你在終端中運行程序,可視化結果卻顯示在另一個窗口中,包含函數和類的腳本存在其他文檔中,更可惡的是你還需另外寫一份說明文檔來解釋程序如何執行以及結果如何。此時 Jupyter Notebook 從天而降,將所有內容收歸一處,你是不是頓覺靈臺清明,思路更加清晰了呢?

(2)支持多語言,也許你習慣使用 R 語言來做數據分析,或者是想用學術界常用的 MATLAB 和 Mathematica,這些都不成問題,只要安裝相對應的核(kernel)即可。這里列出了 Jupyter 支持的所有語言,供您參考。

分享便捷,支持以網頁的形式分享,GitHub 中天然支持 Notebook 展示,也可以通過 nbviewer 分享你的文檔。當然也支持導出成 HTML、Markdown 、PDF 等多種格式的文檔。

(3)遠程運行,在任何地點都可以通過網絡鏈接遠程服務器來實現運算

(4)交互式展現,不僅可以輸出圖片、視頻、數學公式,甚至可以呈現一些互動的可視化內容,比如可以縮放的地圖或者是可以旋轉的三維模型。這就需要交互式插件(Interactive widgets)來支持,更多內容請參考這里。

常見的一些jupyter高級應用如:

數學公式編輯

幻燈片制作

魔術關鍵字
二、jupyter notebook的簡單使用

1、常用的jupyter notebook一些命令如下:指的是在cmd中使用jupyter命令

(1)查看jupyter notebook的相關幫助

jupyter-notebook --help

jupyter-notebook --help-all (會顯示更詳細的信息)

jupyter-notebook -h (只有一個橫杠噢,熟悉命令使用的小伙伴都知道)

(2)jupyter notebook常用的子命令——subcommand

list :列出當前的所打開的jupyter notebook的一些信息,比如:

??? (base) C:\Users\lenovo>jupyter-notebook list
??? Currently running servers:
??? http://localhost:8888/?token=5751bd2f4a5675c59c15c9cdfaa7ecbe431ba68b7d23a3c7 :: C:\Users\lenovo
??? http://localhost:8889/?token=a9f1a6a33a5b0fa93f51552aecbb99a3dec321fdd5e0e74a :: C:\Users\lenovo

?這里我打開了兩個jupyter notebook,一個端口為8888,一個為8889

stop:關閉所給定的端口號的那一個jupyter

??? (base) C:\Users\lenovo>jupyter-notebook stop 8888
??? Shutting down server on port 8888 ...
??? ?
??? (base) C:\Users\lenovo>jupyter notebook list
??? Currently running servers:
??? http://localhost:8889/?token=a9f1a6a33a5b0fa93f51552aecbb99a3dec321fdd5e0e74a :: C:\Users\lenovo

關閉了8888,只剩下一個8889了。
password :給某一個打開的jupyter notebook 服務設置密碼,后面直接輸入所要添加的密碼即可。

(3)jupyter notebook命令的常用選項,下面進介紹一些常用的,想要知道所有的詳細使用可以使用

jupyter notebook --help-all 查看jupyter命令的詳細信息:

?

--generate-config? 產生默認的配置文件()這個是重點,后面會講到)

--no-browser 啟動jupyter notebook之后不打開瀏覽器(默認情況下是會打開一個瀏覽器界面的)

--pylab 同前面講解ipython的時候很類似,在jupyter notebook里面集成,也可以在jupyter notebook里面使用

??????????? %pylab 或者是%matplotlib魔術命令(這是最常用的,后面也會講到)

--config=<Unicode>? 制定一個完全路徑的配置文件名稱,關于配置文件后面會詳解,默認是default,即系統指定的默認配置文件


--ip=<Unicode>? 默認是: 'localhost',從前面的現實中也可以看出來,表示的是notebook服務器會監聽的IP地址,我們也可以手動指定
--port=<Int>? 指定jupyter notebook打開瀏覽器的端口號,默認是: 8888,也可以手動輸入

--notebook-dir=<Unicode> 默認使用默認的目錄,表示的是notebook和kernels的目錄

--browser=<Unicode> 還可以指定某一個特定的瀏覽器打開,默認使用系統默認的瀏覽器打開,是可以自己選定瀏覽器的。
?

2、jupyter的簡單使用

當我們打開jupyter notebook(不管用什么樣的方式打開,使用菜單打開或者是命令行打開是一樣的)會在默認的瀏覽器中看到這樣的界面:

但是每一臺不同的電腦打開之后的界面是不同的,仔細觀察就會發現,這里面現實的一些文件夾就是電腦用戶目錄下面的文件夾,這是為什么呢?那是因為jupyter notebook在啟動的時候總是有一個默認的目錄,一般情況下,使用戶的目錄。

那怎么查看默認目錄,或者是我想要修改默認目錄該怎么做呢?

實際上,jupyter的一些默認設置都設置在一個默認的配置文件中,我們可以查看并且修改配置文件中的內容

(1)查看配置文件

在cmd中使用如下命令:jupyter-notebook --generate-config

??? (base) C:\Users\lenovo>jupyter-notebook --generate-config
??? Writing default config to: C:\Users\lenovo\.jupyter\jupyter_notebook_config.py

可見我的默認配置文件在:C:\Users\lenovo\.jupyter\jupyter_notebook_config.py中,現在我們查看配置文件的信息。得到如下:

打開之后發現,這本質上應該是一個python的 py文件,但是實際上全部都是用井號#開頭的,這不是意味著這都是一些注釋嗎?可以這么說,但實際上觀察會發現,有的有兩個井號開頭 ##,這才是注釋文本,而那些以一個井號#開頭的實際上就是默認的配置信息,也就是我們要修改的。當然這個文件很長,我不會一個一個講解每一個配置信息是什么意思,我指將如何自定義默認目錄。

我們通過編輯器,搜索directory定位到如下位置:

??? ## The directory to use for notebooks and kernels.
??? #c.NotebookApp.notebook_dir = ''

這句話就是設置jupyter的目錄的,可見默認值是沒有的,我們現在比如要使它指定到我們自己的目錄,比如我要讓它指定到F盤中的myjupyter文件夾,則修改如下:

??? ## The directory to use for notebooks and kernels.
??? c.NotebookApp.notebook_dir = 'F:\myjupyter'

保存修改的文件并關閉!然后再打開,發現如下信息,從下面的信息可以看見這樣一句話:

Serving notebooks from local directory: F:\myjupyter ?

這就說明修改成功。

??? (base) C:\Users\lenovo>jupyter-notebook
??? [I 14:17:57.432 NotebookApp] JupyterLab beta preview extension loaded from D:\ProgramData\Anaconda3\lib\site-packages\jupyterlab
??? [I 14:17:57.432 NotebookApp] JupyterLab application directory is D:\ProgramData\Anaconda3\share\jupyter\lab
??? [I 14:18:00.231 NotebookApp] Serving notebooks from local directory: F:\myjupyter
??? [I 14:18:00.232 NotebookApp] 0 active kernels
??? [I 14:18:00.232 NotebookApp] The Jupyter Notebook is running at:
??? [I 14:18:00.232 NotebookApp] http://localhost:8888/?token=ad2aa0097b0687bbd8b5b11909101533630e781e7c28753b
??? [I 14:18:00.232 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
??? [C 14:18:00.234 NotebookApp]
??????? Copy/paste this URL into your browser when you connect for the first time,
??????? to login with a token:
??????????? http://localhost:8888/?token=ad2aa0097b0687bbd8b5b11909101533630e781e7c28753b&token=ad2aa0097b0687bbd8b5b11909101533630e781e7c28753b
??? [I 14:18:00.786 NotebookApp] Accepting one-time-token-authenticated connection from ::1

注意事項:

第一、文件夾必須先創建好,比如這里F盤下面的myjupyter文件夾要先創建好;不然會jupyter初始化時會找不到目錄

第二、要取消注釋,c前面的#要去掉(我還不知道這是為什么?哪位知道望告知!)

第三、要注意文件名不可以是數字

除此之外,上面的這些操作,推薦全部使用anaconda自帶的Anaconda Promp進行操作,因為它提供了非常好的環境管理功能,而在系統自身的cmd中操作,可能因為環境變量設置等相關的一些原因,不成功。比如我在多個環境中都安裝了jupyter,但是cmd中環境變量所指向的那個是A,我們修改的可能是B的配置文件,這樣通過cmd啟動jupyter發現依然未改變。

現在打開,則發現web界面變成了如下:

三、jupyter運行環境的配置——一python運行環境為例

jupyter notebook本質上是一個web應用程序,我們可以在上面書寫代碼,但是代碼本身的運行環境是需要自己安裝的,沒有運行環境,即使是在jupyter notebook里面書寫的代碼怡然沒有辦法運行。因為代碼本身,web應用程序是不認識的。

幸運的是,在使用anaconda安裝的時候,會默認將安裝jupyter,而且會安裝一個Python的運行環境,所以打開jupyter的時候,可以直接看見這個運行環境,在jupyter里面稱之為內核kernel,如下所示:

在右上角點擊下拉按鈕,會得到如圖所示的結果,

第一個python3 ,表示的就是默認的python3 kernel,它是隨著anaconda一起安裝的;

Text File ,表示的是新建一個文本文件

Folder ,表示的是新建一個文件夾

Terminal ,表示的是在瀏覽器中新建一個用戶終端,即類似于cmd的shell。

但是,這是遠遠不夠的,因為我不可能所有的程序都是使用這一個python kernel,使用過TensorFlow的人都知道如何創建一個新的運行環境,打包TensorFlow所依賴的各種包。本文以python為例,我還有另外兩個環境,一個是TensorFlow,一個是pytorch,還有一個是,mxnet。他們都是使用conda創建的python運行環境。其實就一句話:

conda create -n tensorflow python=3.6

conda創建運行環境的方法這里就不詳細說明了,可以參閱相關文章。注意:因為anaconda的服務器在國外,上面的執行速度實在是太慢,甚至等了半天,然后連接失敗,所以,我們可以使用清華大學的鏡像進行下載,在使用上面執行命令之前,添加一句:conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/

再使用:conda create -n tensorflow python=3.6

這會快非常多!!!

注意:

TUNA 還提供了 Anaconda 倉庫的鏡像,運行以下命令:

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/

conda config --set show_channel_urls yes

即可添加 Anaconda Python 免費倉庫。

直接粘貼復制以上代碼即可。另外,要一行一行運行,并且每一行運行完沒有任何結果,直接運行下一行即可。

三行代碼運行完,可以運行 conda install numpy 測試一下吧。

1、原始的方法解決多個Python運行環境問題

就是走在每一個python的運行環境里面都使用conda install notebook 安裝一個與之對應的notebook,然后我在做開發的時候,需要用什么環境,我就在每一個Python環境中的script文件夾下面打開對應的哪個jupyter notebook,這當然沒問題。但這樣做不是很高級,我需要安裝很多次,而且每次在使用jupyter notebook的時候都只能使用一個環境,局限性很大。

2、更高級的辦法

現在,比如我已經在anaconda里面創建了一個名為tensorflow的環境,但是,怎么把它添加到jupyter里面呢?

(1)方法一:

首先在anaconda prompt里面激活我們需要的環境,然后執行下面一個命令:

(base) C:\Users\lenovo>activate python27

(python27) C:\Users\lenovo>python -m ipykernel install --name python27
Installed kernelspec python27 in C:\ProgramData\jupyter\kernels\python27

(base) C:\Users\lenovo>activate tensorflow

(tensorflow) C:\Users\lenovo>python -m ipykernel install --name tensorflow
Installed kernelspec tensorflow in C:\ProgramData\jupyter\kernels\tensorflow

總結:兩步走,

第一步:激活相應的環境

第二部分:執行命令 python -m ipykernel install --name 環境名稱

現在打開我們的jupyter notebook,查看python環境如下:

補充:也有人用下面的方法:

先激活某一個Python環境:然后再執行下面兩個語句:

conda install -n 環境名稱 ipykernel

python -m ipykernel install --user ?

注意:上面這種方式都是可以的,但問題是還是需要針對每一個環境安裝一次ipykernel,而且有時候不知怎么回事,總是會遇見一些亂七八糟的錯誤,我還沒搞清楚是為什么,如果誰知道,望告知。

(2) 方法二——一步到位的方法

在我創建完我需要的運行環境之后,然后只需要在base運行環境中執行一個命令即可。

(base) C:\Users\lenovo>conda install nb_conda

將會將所有的kernel全部添加進去,這種方法是最快的,而且最不容易出錯,推薦使用。

(3)補充方法——綜合前面兩者

(1)一步到位:

(base) C:\Users\lenovo>conda install nb_conda

(base) C:\Users\lenovo>conda install nb_conda_kernels

兩種方法均可以

(2)分步完成:

第一步:激活某一個環境activate mxnet

第二步:在環境中安裝ipykernel:pip install ipykernel

第三步:再執行命令:

???????? python -m ipykernel install --user --name mxnet --display-name mymxnet

后面的藍色部分可以省略。第一個mxnet指的是我激活的那一個環境名,這里是mxnet;第二個mymxnet是我要在jupyter里面顯示的內核名稱,是自己自定義的,我定義為mymxnet。

?

全文總結:關于ipython系列的文章到這里就結束了,三篇文章,從ipython到jupyter notebook,希望對于一些有需要的小伙伴有所幫助,本來還打算寫一篇關于jupyter notebook的使用的,但是這種教程網上實在太多了,就不在這里畫蛇添足了。
————————————————
版權聲明:本文為CSDN博主「LoveMIss-Y」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_27825451/article/details/84427269

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/256399.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/256399.shtml
英文地址,請注明出處:http://en.pswp.cn/news/256399.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ExtJS4.2學習(10)分組表格控件--GroupingGrid(轉)

鳴謝網址&#xff1a;http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-17/179.html --------------------------------------------------------------------------------------------- 分組表格控件在我們的開發中經常被用到&#xff0c;GroupingGrid…

九個Console命令,讓js調試更簡單

一、顯示信息的命令 1: <!DOCTYPE html>2: <html>3: <head>4: <title>常用console命令</title>5: <meta http-equiv"Content-Type" content"text/html; charsetutf-8" />6: </head>7: <body>8: …

numpy——axis

size()和max()中的含義 以前我理解axis0代表行&#xff0c;axis1代表列&#xff1b; 但是這種含義在函數size()和max()中恰恰相反&#xff1b; 其實不是這樣的&#xff0c;我們回到單詞axis本身&#xff0c;它的意思是“軸”&#xff0c;沒錯軸就是代表一個方向&#xff0c;像…

Android ListView幾個重要屬性

1、transciptMode屬性&#xff0c;需要用ListView或者其它顯示大量Items的控件實時跟蹤或者查看信息&#xff0c;并且希望最新的條目可以自動滾動到可視范圍內。通過設置的控件transcriptMode屬性可以將Android平臺的控件&#xff08;支持ScrollBar&#xff09;自動滑動到最底部…

Halcon例程(基于GMM模型的分類)詳解 —— classify_citrus_fruits.hdev

一、例程簡介 該例程比較有代表性&#xff0c;屬于Halcon里的分類方法之一&#xff0c;直接調用Halcon封裝好的GMM分類器&#xff08;高斯混合模型&#xff09;對橘子和檸檬進行分類。GMM屬于概率分類方法&#xff0c;屬于P(Y|X)&#xff0c;通過對樣本的概率密度分布進行估計…

正則表達式匹配不包含特定字符串解決匹配溢出問題

匹配溢出問題在正則表達式當中算是比較常見的問題&#xff0c;它常常導致我們匹配結果莫名其妙的出錯&#xff0c;本文專門為你講解如何通過匹配不包含特定字符串的方法來解決這類問題。 那么&#xff0c;什么是匹配溢出呢&#xff1f; 下面我們來看個例子&#xff1a; 源文本&…

numpy——mgrid

x1,x2 np.mgrid(x1min:x1max:num1j,x2min:x2max:num2j)x1返回的是x1min到x1max間均勻分成num1個數&#xff0c;進行橫向擴展為方陣 x2返回的是x2min到x2max間均勻分成num2個數&#xff0c;進行縱向擴展為方陣 Examples -------- >>> np.mgrid[0:5,0:5] array([[[0,…

Halcon例程(基于3D形狀匹配識別方法)詳解 —— create_shape_model_3d_lowest_model_level.hdev

一、例程簡介 最近在研究3D識別方面的東西&#xff0c;查了不少資料&#xff0c;發現halcon里有不少關于三維物體識別的例程&#xff0c;這里對其中一個做出詳解。該例程是基于三維匹配方法的&#xff0c;因為有三維模型SM3&#xff0c;所以不需要自己創建&#xff1b;另因為例…

15.瀑布流、測量

排行界面TopProtocol &#xff1a;json數據就是寫字符串&#xff0c;所以不需要寫bean對象public class TopProtocol extends BaseProtocol<List<String>> { Override public List<String> paserJson(String json) { List<String> datasnew ArrayList&…

linear-gradient線性漸變

background:linear-gradient(180deg, sliver 20%, skyblue 80%, gray 100%);180deg 是線性漸變的角度,水平方向;如果是90deg,則是垂直方向. silver 20% 是最上面的顏色和該顏色所在的位置,可以為負值,,如 linear-gradient(180deg, silver -7%, pink 80%, skyblue 127%);的效果是…

numpy——stack

np.stack(array,axis,outNone)&#xff0c;函數原型。 其中最重要是的這個axis怎么理解的。 舉例說明&#xff1a;arrays [np.random.randn(3, 4) for _ in range(10)] 會生成一個 10 *( 3 * 4 )的矩陣列表。十個矩陣&#xff0c;每個矩陣是(3 * 4)大小。 首先說明一下axis的映…

C# —— 簡單工廠設計模式詳述

一、基本概念 眾所周知&#xff0c;C#是一種面向對象的語言&#xff0c;而其中封裝&#xff0c;繼承&#xff0c;多態是面向對象的三大重要特征&#xff0c;簡單工廠的設計模式則可以完全體現這些特征。要徹底理解這個模式&#xff0c;必須要先將封裝&#xff08;訪問修飾符的…

【計算機視覺】計算機視覺、模式識別、機器學習常用牛人主頁鏈接

計算機視覺、模式識別、機器學習常用牛人主頁鏈接 牛人主頁&#xff08;主頁有很多論文代碼&#xff09; Serge Belongie at UC San DiegoAntonio Torralba at MITAlexei Ffros at CMUCe Liu at Microsoft Research New EnglandVittorio Ferrari at Univ.of EdinburghKristen G…

C# 中的 ConfigurationManager類引用方法

c#添加了Configuration;后&#xff0c;竟然找不到 ConfigurationManager 這個類&#xff0c;后來才發現&#xff1a;雖然引用了using System.Configuration;這個包&#xff0c;但是還是不行的。 后來終于找到一個解決方法&#xff0c;就是在解決方案資源管理器里找到類文件選擇…

機器學習——支持向量機SVM之python實現簡單實例一(含數據預處理、交叉驗證、參數優化等)

目錄 一、SVM理論 二、numpy的相關函數介紹 三、python實現之準備 1、數據集的下載

工業相機常用類型詳述

一、工業相機定義 工業相機是應用于工業領域、安防和交通等對相機要求較高領域的攝像機&#xff0c;功能就是將光信號轉變成有序的電信號&#xff0c;此信號經過模數轉換為數字信號&#xff0c;然后傳遞給圖像處理器。與一般的家用相機相比&#xff0c;其具有更高的穩定性能&a…

機器學習——SVM之python實現數據樣本標準化和歸一化

目錄 一、標準化和歸一化的目的 1、標準化 2、歸一化 二、標準化和歸一化常用的理論公式 1、歸一化 2、標準化 三、python實現SVM樣本數據標準化和歸一化 1、標準化 2、歸一化 本文源代碼&#xff1a;《機器學習——支持向量機SVM之python實現簡單實例一》 一、標準化…

[黑群暉經典教程] 一步一步建立自己的黑群暉

【申明&#xff1a;本文并非本人所作&#xff0c;為內部網絡中一位大神所寫&#xff0c;個人覺得寫得很好&#xff0c;遂原文搬了過來&#xff0c;如有侵犯原作者的權利&#xff0c;請及時與我聯系】 PS:有好幾個兄弟覺得我擅自轉發&#xff0c;不是很妥。解釋一下&#xff1a;…

Java為什么能跨平臺運行

因為java程序編譯之后的代碼不是能被硬件系統直接運行的代碼&#xff0c;而是一種“中間碼”--字節碼。不同的硬件平臺上裝有不同的java虛擬機&#xff08;JVM&#xff09;&#xff0c;由JVM來把字節碼再翻譯成所對應的硬件平臺能夠執行的代碼&#xff0c;因此java可以跨平臺運…

C++和Opencv4.5 實現全景圖像拼接

前言 最近剛下了最新版的opencv4.5&#xff0c;急不可待的試下操作&#xff0c;就用了opencv自帶的Stitcher類拼接下圖像&#xff0c;結果傻眼了&#xff0c;程序顯示Stitcher沒有createDefault成員&#xff0c;看了好久&#xff0c;終于找到了解決方法。 Stitcher原理 Stit…