關(guān)于python函數(shù)實(shí)現(xiàn)卷積的信息

OpenCV Python 系列教程4 - OpenCV 圖像處理(上)

學(xué)習(xí)目標(biāo):

專業(yè)領(lǐng)域包括網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、商城網(wǎng)站制作、微信營(yíng)銷、系統(tǒng)平臺(tái)開發(fā), 與其他網(wǎng)站設(shè)計(jì)及系統(tǒng)開發(fā)公司不同,創(chuàng)新互聯(lián)的整合解決方案結(jié)合了幫做網(wǎng)絡(luò)品牌建設(shè)經(jīng)驗(yàn)和互聯(lián)網(wǎng)整合營(yíng)銷的理念,并將策略和執(zhí)行緊密結(jié)合,為客戶提供全網(wǎng)互聯(lián)網(wǎng)整合方案。

OpenCV 中有 150 多種色彩空間轉(zhuǎn)化的方法,這里只討論兩種:

HSV的色相范圍為[0,179],飽和度范圍為[0,255],值范圍為[0,255]。不同的軟件使用不同的規(guī)模。如果要比較 OpenCV 值和它們,你需要標(biāo)準(zhǔn)化這些范圍。

HSV 和 HLV 解釋

運(yùn)行結(jié)果:該段程序的作用是檢測(cè)藍(lán)色目標(biāo),同理可以檢測(cè)其他顏色的目標(biāo)

結(jié)果中存在一定的噪音,之后的章節(jié)將會(huì)去掉它

這是物體跟蹤中最簡(jiǎn)單的方法。一旦你學(xué)會(huì)了等高線的函數(shù),你可以做很多事情,比如找到這個(gè)物體的質(zhì)心,用它來跟蹤這個(gè)物體,僅僅通過在相機(jī)前移動(dòng)你的手來畫圖表,還有很多其他有趣的事情。

菜鳥教程 在線 HSV- BGR 轉(zhuǎn)換

比如要找出綠色的 HSV 值,可以使用上面的程序,得到的值取一個(gè)上下界。如上面的取下界 [H-10, 100, 100],上界 [H+10, 255, 255]

或者使用其他工具如 GIMP

學(xué)習(xí)目標(biāo):

對(duì)圖像進(jìn)行閾值處理,算是一種最簡(jiǎn)單的圖像分割方法,基于圖像與背景之間的灰度差異,此項(xiàng)分割是基于像素級(jí)的分割

threshold(src, thresh, maxval, type[, dst]) - retval, dst

計(jì)算圖像小區(qū)域的閾值。所以我們對(duì)同一幅圖像的不同區(qū)域得到不同的閾值,這給我們?cè)诓煌庹障碌膱D像提供了更好的結(jié)果。

三個(gè)特殊的輸入?yún)?shù)和一個(gè)輸出參數(shù)

adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C[, dst]) - dst

opencv-threshold-python

OpenCV 圖片集

本節(jié)原文

學(xué)習(xí)目標(biāo):

OpenCV 提供兩種變換函數(shù): cv2.warpAffine 和 cv2.warpPerspective

cv2.resize() 完成縮放

文檔說明

運(yùn)行結(jié)果

說明 : cv2.INTER_LINEAR 方法比 cv2.INTER_CUBIC 還慢,好像與官方文檔說的不一致? 有待驗(yàn)證。

速度比較: INTER_CUBIC INTER_NEAREST INTER_LINEAR INTER_AREA INTER_LANCZOS4

改變圖像的位置,創(chuàng)建一個(gè) np.float32 類型的變換矩陣,

warpAffine(src, M, dsize[, dst[, flags[, borderMode[, borderValue]]]]) - dst

運(yùn)行結(jié)果:

旋轉(zhuǎn)角度( )是通過一個(gè)變換矩陣變換的:

OpenCV 提供的是可調(diào)旋轉(zhuǎn)中心的縮放旋轉(zhuǎn),這樣你可以在任何你喜歡的位置旋轉(zhuǎn)。修正后的變換矩陣為

這里

OpenCV 提供了 cv2.getRotationMatrix2D 控制

cv2.getRotationMatrix2D(center, angle, scale) → retval

運(yùn)行結(jié)果

cv2.getAffineTransform(src, dst) → retval

函數(shù)關(guān)系:

\begin{bmatrix} x'_i \ y'_i \end{bmatrix}\begin{bmatrix} x'_i \ y'_i \end{bmatrix} =

其中

運(yùn)行結(jié)果:圖上的點(diǎn)便于觀察,兩圖中的紅點(diǎn)是相互對(duì)應(yīng)的

透視變換需要一個(gè) 3x3 變換矩陣。轉(zhuǎn)換之后直線仍然保持筆直,要找到這個(gè)變換矩陣,需要輸入圖像上的 4 個(gè)點(diǎn)和輸出圖像上的對(duì)應(yīng)點(diǎn)。在這 4 個(gè)點(diǎn)中,有 3 個(gè)不應(yīng)該共線。通過 cv2.getPerspectiveTransform 計(jì)算得到變換矩陣,得到的矩陣 cv2.warpPerspective 變換得到最終結(jié)果。

本節(jié)原文

平滑處理(smoothing)也稱模糊處理(bluring),是一種簡(jiǎn)單且使用頻率很高的圖像處理方法。平滑處理的用途:常見是用來 減少圖像上的噪點(diǎn)或失真 。在涉及到降低圖像分辨率時(shí),平滑處理是很好用的方法。

圖像濾波:盡量保留圖像細(xì)節(jié)特征的條件下對(duì)目標(biāo)圖像的噪聲進(jìn)行抑制,其處理效果的好壞將直接影響到后續(xù)圖像處理和分析的有效性和可靠性。

消除圖像中的噪聲成分叫做圖像的平滑化或?yàn)V波操作。信號(hào)或圖像的能量大部分集中在幅度譜的低頻和中頻段,在高頻段,有用的信息會(huì)被噪聲淹沒。因此一個(gè)能降低高頻成分幅度的濾波器就能夠減弱噪聲的影響。

濾波的目的:抽出對(duì)象的特征作為圖像識(shí)別的特征模式;為適應(yīng)圖像處理的要求,消除圖像數(shù)字化時(shí)混入的噪聲。

濾波處理的要求:不能損壞圖像的輪廓及邊緣等重要信息;圖像清晰視覺效果好。

平滑濾波是低頻增強(qiáng)的空間濾波技術(shù),目的:模糊和消除噪音。

空間域的平滑濾波一般采用簡(jiǎn)單平均法,即求鄰近像元點(diǎn)的平均亮度值。鄰域的大小與平滑的效果直接相關(guān),鄰域越大平滑效果越好,但是鄰域過大,平滑也會(huì)使邊緣信息的損失的越大,從而使輸出圖像變得模糊。因此需要選擇合適的鄰域。

濾波器:一個(gè)包含加權(quán)系數(shù)的窗口,利用濾波器平滑處理圖像時(shí),把這個(gè)窗口放在圖像上,透過這個(gè)窗口來看我們得到的圖像。

線性濾波器:用于剔除輸入信號(hào)中不想要的頻率或者從許多頻率中選擇一個(gè)想要的頻率。

低通濾波器、高通濾波器、帶通濾波器、帶阻濾波器、全通濾波器、陷波濾波器

boxFilter(src, ddepth, ksize[, dst[, anchor[, normalize[, borderType]]]]) - dst

均值濾波是方框?yàn)V波歸一化后的特殊情況。歸一化就是要把處理的量縮放到一個(gè)范圍內(nèi)如 (0,1),以便統(tǒng)一處理和直觀量化。非歸一化的方框?yàn)V波用于計(jì)算每個(gè)像素鄰近內(nèi)的積分特性,比如密集光流算法中用到的圖像倒數(shù)的協(xié)方差矩陣。

運(yùn)行結(jié)果:

均值濾波是典型的線性濾波算法,主要方法為鄰域平均法,即用一片圖像區(qū)域的各個(gè)像素的均值來代替原圖像中的各個(gè)像素值。一般需要在圖像上對(duì)目標(biāo)像素給出一個(gè)模板(內(nèi)核),該模板包括了其周圍的臨近像素(比如以目標(biāo)像素為中心的周圍8(3x3-1)個(gè)像素,構(gòu)成一個(gè)濾波模板,即 去掉目標(biāo)像素本身 )。再用模板中的全體像素的平均值來代替原來像素值。即對(duì)待處理的當(dāng)前像素點(diǎn)(x,y),選擇一個(gè)模板,該模板由其近鄰的若干像素組成,求模板中所有像素的均值,再把該均值賦予當(dāng)前像素點(diǎn)(x,y),作為處理后圖像在該點(diǎn)上的灰度個(gè)g(x,y),即個(gè)g(x,y)=1/m ∑f(x,y) ,其中m為該模板中包含當(dāng)前像素在內(nèi)的像素總個(gè)數(shù)。

均值濾波本身存在著固有的缺陷,即它不能很好地保護(hù)圖像細(xì)節(jié),在圖像去噪的同時(shí)也破壞了圖像的細(xì)節(jié)部分,從而使圖像變得模糊,不能很好地去除噪聲點(diǎn)。

cv2.blur(src, ksize[, dst[, anchor[, borderType]]]) → dst

結(jié)果:

高斯濾波:線性濾波,可以消除高斯噪聲,廣泛應(yīng)用于圖像處理的減噪過程。高斯濾波就是對(duì)整幅圖像進(jìn)行加權(quán)平均的過程,每一個(gè)像素點(diǎn)的值,都由其本身和鄰域內(nèi)的其他像素值經(jīng)過 加權(quán)平均 后得到。高斯濾波的具體操作是:用一個(gè)模板(或稱卷積、掩模)掃描圖像中的每一個(gè)像素,用模板確定的鄰域內(nèi)像素的加權(quán)平均灰度值去替代模板中心像素點(diǎn)的值。

高斯濾波有用但是效率不高。

高斯模糊技術(shù)生成的圖像,其視覺效果就像是經(jīng)過一個(gè)半透明屏幕在觀察圖像,這與鏡頭焦外成像效果散景以及普通照明陰影中的效果都明顯不同。高斯平滑也用于計(jì)算機(jī)視覺算法中的預(yù)先處理階段,以增強(qiáng)圖像在不同比例大小下的圖像效果(參見尺度空間表示以及尺度空間實(shí)現(xiàn))。從數(shù)學(xué)的角度來看,圖像的高斯模糊過程就是圖像與正態(tài)分布做卷積。由于正態(tài)分布又叫作高斯分布,所以這項(xiàng)技術(shù)就叫作高斯模糊。

高斯濾波器是一類根據(jù)高斯函數(shù)的形狀來選擇權(quán)值的線性平滑濾波器。 高斯平滑濾波器對(duì)于抑制服從正態(tài)分布的噪聲非常有效。

一維零均值高斯函數(shù)為: 高斯分布參數(shù) 決定了高斯函數(shù)的寬度。

高斯噪聲的產(chǎn)生

GaussianBlur(src, ksize, sigmaX[, dst[, sigmaY[, borderType]]]) - dst

線性濾波容易構(gòu)造,并且易于從頻率響應(yīng)的角度來進(jìn)行分析。

許多情況,使用近鄰像素的非線性濾波會(huì)得到更好的結(jié)果。比如在噪聲是散粒噪聲而不是高斯噪聲,即圖像偶爾會(huì)出現(xiàn)很大值的時(shí)候,用高斯濾波器進(jìn)行圖像模糊時(shí),噪聲像素不會(huì)被消除,而是轉(zhuǎn)化為更為柔和但仍然可見的散粒。

中值濾波(Median filter)是一種典型的非線性濾波技術(shù),基本思想是用像素點(diǎn)鄰域灰度值的中值來代替該像素點(diǎn)的灰度值,該方法在去除脈沖噪聲、椒鹽噪聲『椒鹽噪聲又稱脈沖噪聲,它隨機(jī)改變一些像素值,是由圖像傳感器,傳輸信道,解碼處理等產(chǎn)生的黑白相間的亮暗點(diǎn)噪聲。椒鹽噪聲往往由圖像切割引起?!坏耐瑫r(shí)又能保留圖像邊緣細(xì)節(jié),

中值濾波是基于排序統(tǒng)計(jì)理論的一種能有效抑制噪聲的非線性信號(hào)處理技術(shù),其基本原理是把數(shù)字圖像或數(shù)字序列中一點(diǎn)的值用該點(diǎn)的一個(gè)鄰域中各點(diǎn)值的中值代替,讓周圍的像素值接近的真實(shí)值,從而消除孤立的噪聲點(diǎn),對(duì)于 斑點(diǎn)噪聲(speckle noise)和椒鹽噪聲(salt-and-pepper noise) 來說尤其有用,因?yàn)樗灰蕾囉卩徲騼?nèi)那些與典型值差別很大的值。中值濾波器在處理連續(xù)圖像窗函數(shù)時(shí)與線性濾波器的工作方式類似,但濾波過程卻不再是加權(quán)運(yùn)算。

中值濾波在一定的條件下可以克服常見線性濾波器如最小均方濾波、方框?yàn)V波器、均值濾波等帶來的圖像細(xì)節(jié)模糊,而且對(duì)濾除脈沖干擾及圖像掃描噪聲非常有效,也常用于保護(hù)邊緣信息, 保存邊緣的特性使它在不希望出現(xiàn)邊緣模糊的場(chǎng)合也很有用,是非常經(jīng)典的平滑噪聲處理方法。

與均值濾波比較:

說明:中值濾波在一定條件下,可以克服線性濾波器(如均值濾波等)所帶來的圖像細(xì)節(jié)模糊,而且對(duì)濾除脈沖干擾即圖像掃描噪聲最為有效。在實(shí)際運(yùn)算過程中并不需要圖像的統(tǒng)計(jì)特性,也給計(jì)算帶來不少方便。 但是對(duì)一些細(xì)節(jié)多,特別是線、尖頂?shù)燃?xì)節(jié)多的圖像不宜采用中值濾波。

雙邊濾波(Bilateral filter)是一種非線性的濾波方法,是結(jié)合 圖像的空間鄰近度和像素值相似度 的一種折衷處理,同時(shí)考慮空域信息和灰度相似性,達(dá)到保邊去噪的目的。具有簡(jiǎn)單、非迭代、局部的特點(diǎn)。

雙邊濾波器的好處是可以做邊緣保存(edge preserving),一般過去用的維納濾波或者高斯濾波去降噪,都會(huì)較明顯地模糊邊緣,對(duì)于高頻細(xì)節(jié)的保護(hù)效果并不明顯。雙邊濾波器顧名思義比高斯濾波多了一個(gè)高斯方差 sigma-d ,它是基于空間分布的高斯濾波函數(shù),所以在邊緣附近,離的較遠(yuǎn)的像素不會(huì)太多影響到邊緣上的像素值,這樣就保證了邊緣附近像素值的保存。 但是由于保存了過多的高頻信息,對(duì)于彩色圖像里的高頻噪聲,雙邊濾波器不能夠干凈的濾掉,只能夠?qū)τ诘皖l信息進(jìn)行較好的濾波。

運(yùn)行結(jié)果

學(xué)習(xí)目標(biāo):

形態(tài)變換是基于圖像形狀的一些簡(jiǎn)單操作。它通常在二進(jìn)制圖像上執(zhí)行。

膨脹與腐蝕實(shí)現(xiàn)的功能

侵蝕的基本思想就像土壤侵蝕一樣,它會(huì)侵蝕前景物體的邊界(總是試圖保持前景為白色)。那它是做什么的??jī)?nèi)核在圖像中滑動(dòng)(如在2D卷積中)。只有當(dāng)內(nèi)核下的所有像素都是 1 時(shí),原始圖像中的像素( 1 或 0 )才會(huì)被視為 1 ,否則它將被侵蝕(變?yōu)榱悖?/p>

erode(src, kernel[, dst[, anchor[, iterations[, borderType[, borderValue]]]]]) - dst

與腐蝕的操作相反。如果內(nèi)核下的至少一個(gè)像素為“1”,則像素元素為“1”。因此它增加了圖像中的白色區(qū)域或前景對(duì)象的大小增加。通常,在去除噪音的情況下,侵蝕之后是擴(kuò)張。因?yàn)?,侵蝕會(huì)消除白噪聲,但它也會(huì)縮小我們的物體。所以我們擴(kuò)大它。由于噪音消失了,它們不會(huì)再回來,但我們的物體區(qū)域會(huì)增加。它也可用于連接對(duì)象的破碎部分

10 個(gè) Python 圖像編輯工具

以下提到的這些 Python 工具在編輯圖像、操作圖像底層數(shù)據(jù)方面都提供了簡(jiǎn)單直接的方法。

-- Parul Pandey

當(dāng)今的世界充滿了數(shù)據(jù),而圖像數(shù)據(jù)就是其中很重要的一部分。但只有經(jīng)過處理和分析,提高圖像的質(zhì)量,從中提取出有效地信息,才能利用到這些圖像數(shù)據(jù)。

常見的圖像處理操作包括顯示圖像,基本的圖像操作,如裁剪、翻轉(zhuǎn)、旋轉(zhuǎn);圖像的分割、分類、特征提取;圖像恢復(fù);以及圖像識(shí)別等等。Python 作為一種日益風(fēng)靡的科學(xué)編程語言,是這些圖像處理操作的最佳選擇。同時(shí),在 Python 生態(tài)當(dāng)中也有很多可以免費(fèi)使用的優(yōu)秀的圖像處理工具。

下文將介紹 10 個(gè)可以用于圖像處理任務(wù)的 Python 庫,它們?cè)诰庉媹D像、查看圖像底層數(shù)據(jù)方面都提供了簡(jiǎn)單直接的方法。

scikit-image 是一個(gè)結(jié)合 NumPy 數(shù)組使用的開源 Python 工具,它實(shí)現(xiàn)了可用于研究、教育、工業(yè)應(yīng)用的算法和應(yīng)用程序。即使是對(duì)于剛剛接觸 Python 生態(tài)圈的新手來說,它也是一個(gè)在使用上足夠簡(jiǎn)單的庫。同時(shí)它的代碼質(zhì)量也很高,因?yàn)樗怯梢粋€(gè)活躍的志愿者社區(qū)開發(fā)的,并且通過了 同行評(píng)審(peer review)。

scikit-image 的 文檔 非常完善,其中包含了豐富的用例。

可以通過導(dǎo)入 skimage 使用,大部分的功能都可以在它的子模塊中找到。

圖像濾波(image filtering):

使用 match_template() 方法實(shí)現(xiàn) 模板匹配(template matching):

在 展示頁面 可以看到更多相關(guān)的例子。

NumPy 提供了對(duì)數(shù)組的支持,是 Python 編程的一個(gè)核心庫。圖像的本質(zhì)其實(shí)也是一個(gè)包含像素?cái)?shù)據(jù)點(diǎn)的標(biāo)準(zhǔn) NumPy 數(shù)組,因此可以通過一些基本的 NumPy 操作(例如切片、 掩膜(mask)、 花式索引(fancy indexing)等),就可以從像素級(jí)別對(duì)圖像進(jìn)行編輯。通過 NumPy 數(shù)組存儲(chǔ)的圖像也可以被 skimage 加載并使用 matplotlib 顯示。

在 NumPy 的 官方文檔 中提供了完整的代碼文檔和資源列表。

使用 NumPy 對(duì)圖像進(jìn)行 掩膜(mask)操作:

像 NumPy 一樣, SciPy 是 Python 的一個(gè)核心科學(xué)計(jì)算模塊,也可以用于圖像的基本操作和處理。尤其是 SciPy v1.1.0 中的 scipy.ndimage 子模塊,它提供了在 n 維 NumPy 數(shù)組上的運(yùn)行的函數(shù)。SciPy 目前還提供了 線性和非線性濾波(linear and non-linear filtering)、 二值形態(tài)學(xué)(binary morphology)、 B 樣條插值(B-spline interpolation)、 對(duì)象測(cè)量(object measurements)等方面的函數(shù)。

在 官方文檔 中可以查閱到 scipy.ndimage 的完整函數(shù)列表。

使用 SciPy 的 高斯濾波 對(duì)圖像進(jìn)行模糊處理:

PIL (Python Imaging Library) 是一個(gè)免費(fèi) Python 編程庫,它提供了對(duì)多種格式圖像文件的打開、編輯、保存的支持。但在 2009 年之后 PIL 就停止發(fā)布新版本了。幸運(yùn)的是,還有一個(gè) PIL 的積極開發(fā)的分支 Pillow ,它的安裝過程比 PIL 更加簡(jiǎn)單,支持大部分主流的操作系統(tǒng),并且還支持 Python 3。Pillow 包含了圖像的基礎(chǔ)處理功能,包括像素點(diǎn)操作、使用內(nèi)置卷積內(nèi)核進(jìn)行濾波、顏色空間轉(zhuǎn)換等等。

Pillow 的 官方文檔 提供了 Pillow 的安裝說明自己代碼庫中每一個(gè)模塊的示例。

使用 Pillow 中的 ImageFilter 模塊實(shí)現(xiàn)圖像增強(qiáng):

OpenCV(Open Source Computer Vision 庫)是計(jì)算機(jī)視覺領(lǐng)域最廣泛使用的庫之一, OpenCV-Python 則是 OpenCV 的 Python API。OpenCV-Python 的運(yùn)行速度很快,這歸功于它使用 C/C++ 編寫的后臺(tái)代碼,同時(shí)由于它使用了 Python 進(jìn)行封裝,因此調(diào)用和部署的難度也不大。這些優(yōu)點(diǎn)讓 OpenCV-Python 成為了計(jì)算密集型計(jì)算機(jī)視覺應(yīng)用程序的一個(gè)不錯(cuò)的選擇。

入門之前最好先閱讀 OpenCV2-Python-Guide 這份文檔。

使用 OpenCV-Python 中的 金字塔融合(Pyramid Blending)將蘋果和橘子融合到一起:

SimpleCV 是一個(gè)開源的計(jì)算機(jī)視覺框架。它支持包括 OpenCV 在內(nèi)的一些高性能計(jì)算機(jī)視覺庫,同時(shí)不需要去了解 位深度(bit depth)、文件格式、 色彩空間(color space)之類的概念,因此 SimpleCV 的學(xué)習(xí)曲線要比 OpenCV 平緩得多,正如它的口號(hào)所說,“將計(jì)算機(jī)視覺變得更簡(jiǎn)單”。SimpleCV 的優(yōu)點(diǎn)還有:

官方文檔 簡(jiǎn)單易懂,同時(shí)也附有大量的學(xué)習(xí)用例。

文檔 包含了安裝介紹、示例以及一些 Mahotas 的入門教程。

Mahotas 力求使用少量的代碼來實(shí)現(xiàn)功能。例如這個(gè) Finding Wally 游戲 :

ITK (Insight Segmentation and Registration Toolkit)是一個(gè)為開發(fā)者提供普適性圖像分析功能的開源、跨平臺(tái)工具套件, SimpleITK 則是基于 ITK 構(gòu)建出來的一個(gè)簡(jiǎn)化層,旨在促進(jìn) ITK 在快速原型設(shè)計(jì)、教育、解釋語言中的應(yīng)用。SimpleITK 作為一個(gè)圖像分析工具包,它也帶有 大量的組件 ,可以支持常規(guī)的濾波、圖像分割、 圖像配準(zhǔn)(registration)功能。盡管 SimpleITK 使用 C++ 編寫,但它也支持包括 Python 在內(nèi)的大部分編程語言。

有很多 Jupyter Notebooks 用例可以展示 SimpleITK 在教育和科研領(lǐng)域中的應(yīng)用,通過這些用例可以看到如何使用 Python 和 R 利用 SimpleITK 來實(shí)現(xiàn)交互式圖像分析。

使用 Python + SimpleITK 實(shí)現(xiàn)的 CT/MR 圖像配準(zhǔn)過程:

pgmagick 是使用 Python 封裝的 GraphicsMagick 庫。 GraphicsMagick 通常被認(rèn)為是圖像處理界的瑞士軍刀,因?yàn)樗鼜?qiáng)大而又高效的工具包支持對(duì)多達(dá) 88 種主流格式圖像文件的讀寫操作,包括 DPX、GIF、JPEG、JPEG-2000、PNG、PDF、PNM、TIFF 等等。

pgmagick 的 GitHub 倉庫 中有相關(guān)的安裝說明、依賴列表,以及詳細(xì)的 使用指引 。

圖像縮放:

邊緣提?。?/p>

Cairo 是一個(gè)用于繪制矢量圖的二維圖形庫,而 Pycairo 是用于 Cairo 的一組 Python 綁定。矢量圖的優(yōu)點(diǎn)在于做大小縮放的過程中不會(huì)丟失圖像的清晰度。使用 Pycairo 可以在 Python 中調(diào)用 Cairo 的相關(guān)命令。

Pycairo 的 GitHub 倉庫 提供了關(guān)于安裝和使用的詳細(xì)說明,以及一份簡(jiǎn)要介紹 Pycairo 的 入門指南 。

使用 Pycairo 繪制線段、基本圖形、 徑向漸變(radial gradients):

以上就是 Python 中的一些有用的圖像處理庫,無論你有沒有聽說過、有沒有使用過,都值得試用一下并了解它們。

via:

作者: Parul Pandey 選題: lujun9972 譯者: HankChow 校對(duì): wxy

怎樣才可以自學(xué)Python呢

對(duì)于自學(xué)的小伙伴,小蝸這里整理了一份Python全棧開發(fā)的學(xué)習(xí)路線,可按照這份大綱進(jìn)行一些學(xué)習(xí)計(jì)劃,避免多走彎路。

第一階段:專業(yè)核心基礎(chǔ)

階段目標(biāo):

1. 熟練掌握Python的開發(fā)環(huán)境與編程核心知識(shí)

2. 熟練運(yùn)用Python面向?qū)ο笾R(shí)進(jìn)行程序開發(fā)

3. 對(duì)Python的核心庫和組件有深入理解

4. 熟練應(yīng)用SQL語句進(jìn)行數(shù)據(jù)庫常用操作

5. 熟練運(yùn)用Linux操作系統(tǒng)命令及環(huán)境配置

6. 熟練使用MySQL,掌握數(shù)據(jù)庫高級(jí)操作

7. 能綜合運(yùn)用所學(xué)知識(shí)完成項(xiàng)目

知識(shí)點(diǎn):

Python編程基礎(chǔ)、Python面向?qū)ο蟆ython高級(jí)進(jìn)階、MySQL數(shù)據(jù)庫、Linux操作系統(tǒng)。

1、Python編程基礎(chǔ),語法規(guī)則,函數(shù)與參數(shù),數(shù)據(jù)類型,模塊與包,文件IO,培養(yǎng)扎實(shí)的Python編程基本功,同時(shí)對(duì)Python核心對(duì)象和庫的編程有熟練的運(yùn)用。

2、Python面向?qū)ο?,核心?duì)象,異常處理,多線程,網(wǎng)絡(luò)編程,深入理解面向?qū)ο缶幊蹋惓L幚頇C(jī)制,多線程原理,網(wǎng)絡(luò)協(xié)議知識(shí),并熟練運(yùn)用于項(xiàng)目中。

3、類的原理,MetaClass,下劃線的特殊方法,遞歸,魔術(shù)方法,反射,迭代器,裝飾器,UnitTest,Mock。深入理解面向?qū)ο蟮讓釉?,掌握Python開發(fā)高級(jí)進(jìn)階技術(shù),理解單元測(cè)試技術(shù)。

4、數(shù)據(jù)庫知識(shí),范式,MySQL配置,命令,建庫建表,數(shù)據(jù)的增刪改查,約束,視圖,存儲(chǔ)過程,函數(shù),觸發(fā)器,事務(wù),游標(biāo),PDBC,深入理解數(shù)據(jù)庫管理系統(tǒng)通用知識(shí)及MySQL數(shù)據(jù)庫的使用與管理。為Python后臺(tái)開發(fā)打下堅(jiān)實(shí)基礎(chǔ)。

5、Linux安裝配置,文件目錄操作,VI命令,管理,用戶與權(quán)限,環(huán)境配置,Docker,Shell編程Linux作為一個(gè)主流的服務(wù)器操作系統(tǒng),是每一個(gè)開發(fā)工程師必須掌握的重點(diǎn)技術(shù),并且能夠熟練運(yùn)用。

第二階段:PythonWEB開發(fā)

階段目標(biāo):

1. 熟練掌握Web前端開發(fā)技術(shù),HTML,CSS,JavaScript及前端框架

2. 深入理解Web系統(tǒng)中的前后端交互過程與通信協(xié)議

3. 熟練運(yùn)用Web前端和Django和Flask等主流框架完成Web系統(tǒng)開發(fā)

4. 深入理解網(wǎng)絡(luò)協(xié)議,分布式,PDBC,AJAX,JSON等知識(shí)

5. 能夠運(yùn)用所學(xué)知識(shí)開發(fā)一個(gè)MiniWeb框架,掌握框架實(shí)現(xiàn)原理

6. 使用Web開發(fā)框架實(shí)現(xiàn)貫穿項(xiàng)目

知識(shí)點(diǎn):

Web前端編程、Web前端高級(jí)、Django開發(fā)框架、Flask開發(fā)框架、Web開發(fā)項(xiàng)目實(shí)戰(zhàn)。

1、Web頁面元素,布局,CSS樣式,盒模型,JavaScript,JQuery與Bootstrap掌握前端開發(fā)技術(shù),掌握J(rèn)Query與BootStrap前端開發(fā)框架,完成頁面布局與美化。

2、前端開發(fā)框架Vue,JSON數(shù)據(jù),網(wǎng)絡(luò)通信協(xié)議,Web服務(wù)器與前端交互熟練使用Vue框架,深入理解HTTP網(wǎng)絡(luò)協(xié)議,熟練使用Swagger,AJAX技術(shù)實(shí)現(xiàn)前后端交互。

3、自定義Web開發(fā)框架,Django框架的基本使用,Model屬性及后端配置,Cookie與Session,模板Templates,ORM數(shù)據(jù)模型,Redis二級(jí)緩存,RESTful,MVC模型掌握Django框架常用API,整合前端技術(shù),開發(fā)完整的WEB系統(tǒng)和框架。

4、Flask安裝配置,App對(duì)象的初始化和配置,視圖函數(shù)的路由,Request對(duì)象,Abort函數(shù),自定義錯(cuò)誤,視圖函數(shù)的返回值,F(xiàn)lask上下文和請(qǐng)求鉤子,模板,數(shù)據(jù)庫擴(kuò)展包Flask-Sqlalchemy,數(shù)據(jù)庫遷移擴(kuò)展包Flask-Migrate,郵件擴(kuò)展包Flask-Mail。掌握Flask框架的常用API,與Django框架的異同,并能獨(dú)立開發(fā)完整的WEB系統(tǒng)開發(fā)。

第三階段:爬蟲與數(shù)據(jù)分析

階段目標(biāo):

1. 熟練掌握爬蟲運(yùn)行原理及常見網(wǎng)絡(luò)抓包工具使用,能夠?qū)TTP及HTTPS協(xié)議進(jìn)行抓包分析

2. 熟練掌握各種常見的網(wǎng)頁結(jié)構(gòu)解析庫對(duì)抓取結(jié)果進(jìn)行解析和提取

3. 熟練掌握各種常見反爬機(jī)制及應(yīng)對(duì)策略,能夠針對(duì)常見的反爬措施進(jìn)行處理

4. 熟練使用商業(yè)爬蟲框架Scrapy編寫大型網(wǎng)絡(luò)爬蟲進(jìn)行分布式內(nèi)容爬取

5. 熟練掌握數(shù)據(jù)分析相關(guān)概念及工作流程

6. 熟練掌握主流數(shù)據(jù)分析工具Numpy、Pandas和Matplotlib的使用

7. 熟練掌握數(shù)據(jù)清洗、整理、格式轉(zhuǎn)換、數(shù)據(jù)分析報(bào)告編寫

8. 能夠綜合利用爬蟲爬取豆瓣網(wǎng)電影評(píng)論數(shù)據(jù)并完成數(shù)據(jù)分析全流程項(xiàng)目實(shí)戰(zhàn)

知識(shí)點(diǎn):

網(wǎng)絡(luò)爬蟲開發(fā)、數(shù)據(jù)分析之Numpy、數(shù)據(jù)分析之Pandas。

1、爬蟲頁面爬取原理、爬取流程、頁面解析工具LXML,Beautifulfoup,正則表達(dá)式,代理池編寫和架構(gòu)、常見反爬措施及解決方案、爬蟲框架結(jié)構(gòu)、商業(yè)爬蟲框架Scrapy,基于對(duì)爬蟲爬取原理、網(wǎng)站數(shù)據(jù)爬取流程及網(wǎng)絡(luò)協(xié)議的分析和了解,掌握網(wǎng)頁解析工具的使用,能夠靈活應(yīng)對(duì)大部分網(wǎng)站的反爬策略,具備獨(dú)立完成爬蟲框架的編寫能力和熟練應(yīng)用大型商業(yè)爬蟲框架編寫分布式爬蟲的能力。

2、Numpy中的ndarray數(shù)據(jù)結(jié)構(gòu)特點(diǎn)、numpy所支持的數(shù)據(jù)類型、自帶的數(shù)組創(chuàng)建方法、算術(shù)運(yùn)算符、矩陣積、自增和自減、通用函數(shù)和聚合函數(shù)、切片索引、ndarray的向量化和廣播機(jī)制,熟悉數(shù)據(jù)分析三大利器之一Numpy的常見使用,熟悉ndarray數(shù)據(jù)結(jié)構(gòu)的特點(diǎn)和常見操作,掌握針對(duì)不同維度的ndarray數(shù)組的分片、索引、矩陣運(yùn)算等操作。

3、Pandas里面的三大數(shù)據(jù)結(jié)構(gòu),包括Dataframe、Series和Index對(duì)象的基本概念和使用,索引對(duì)象的更換及刪除索引、算術(shù)和數(shù)據(jù)對(duì)齊方法,數(shù)據(jù)清洗和數(shù)據(jù)規(guī)整、結(jié)構(gòu)轉(zhuǎn)換,熟悉數(shù)據(jù)分析三大利器之一Pandas的常見使用,熟悉Pandas中三大數(shù)據(jù)對(duì)象的使用方法,能夠使用Pandas完成數(shù)據(jù)分析中最重要的數(shù)據(jù)清洗、格式轉(zhuǎn)換和數(shù)據(jù)規(guī)整工作、Pandas對(duì)文件的讀取和操作方法。

4、matplotlib三層結(jié)構(gòu)體系、各種常見圖表類型折線圖、柱狀圖、堆積柱狀圖、餅圖的繪制、圖例、文本、標(biāo)線的添加、可視化文件的保存,熟悉數(shù)據(jù)分析三大利器之一Matplotlib的常見使用,熟悉Matplotlib的三層結(jié)構(gòu),能夠熟練使用Matplotlib繪制各種常見的數(shù)據(jù)分析圖表。能夠綜合利用課程中所講的各種數(shù)據(jù)分析和可視化工具完成股票市場(chǎng)數(shù)據(jù)分析和預(yù)測(cè)、共享單車用戶群里數(shù)據(jù)分析、全球幸福指數(shù)數(shù)據(jù)分析等項(xiàng)目的全程實(shí)戰(zhàn)。

第四階段:機(jī)器學(xué)習(xí)與人工智能

階段目標(biāo):

1. 理解機(jī)器學(xué)習(xí)相關(guān)的基本概念及系統(tǒng)處理流程

2. 能夠熟練應(yīng)用各種常見的機(jī)器學(xué)習(xí)模型解決監(jiān)督學(xué)習(xí)和非監(jiān)督學(xué)習(xí)訓(xùn)練和測(cè)試問題,解決回歸、分類問題

3. 熟練掌握常見的分類算法和回歸算法模型,如KNN、決策樹、隨機(jī)森林、K-Means等

4. 掌握卷積神經(jīng)網(wǎng)絡(luò)對(duì)圖像識(shí)別、自然語言識(shí)別問題的處理方式,熟悉深度學(xué)習(xí)框架TF里面的張量、會(huì)話、梯度優(yōu)化模型等

5. 掌握深度學(xué)習(xí)卷積神經(jīng)網(wǎng)絡(luò)運(yùn)行機(jī)制,能夠自定義卷積層、池化層、FC層完成圖像識(shí)別、手寫字體識(shí)別、驗(yàn)證碼識(shí)別等常規(guī)深度學(xué)習(xí)實(shí)戰(zhàn)項(xiàng)目

知識(shí)點(diǎn):

1、機(jī)器學(xué)習(xí)常見算法、sklearn數(shù)據(jù)集的使用、字典特征抽取、文本特征抽取、歸一化、標(biāo)準(zhǔn)化、數(shù)據(jù)主成分分析PCA、KNN算法、決策樹模型、隨機(jī)森林、線性回歸及邏輯回歸模型和算法。熟悉機(jī)器學(xué)習(xí)相關(guān)基礎(chǔ)概念,熟練掌握機(jī)器學(xué)習(xí)基本工作流程,熟悉特征工程、能夠使用各種常見機(jī)器學(xué)習(xí)算法模型解決分類、回歸、聚類等問題。

2、Tensorflow相關(guān)的基本概念,TF數(shù)據(jù)流圖、會(huì)話、張量、tensorboard可視化、張量修改、TF文件讀取、tensorflow playround使用、神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)、卷積計(jì)算、激活函數(shù)計(jì)算、池化層設(shè)計(jì),掌握機(jī)器學(xué)習(xí)和深度學(xué)習(xí)之前的區(qū)別和練習(xí),熟練掌握深度學(xué)習(xí)基本工作流程,熟練掌握神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)層次及特點(diǎn),掌握張量、圖結(jié)構(gòu)、OP對(duì)象等的使用,熟悉輸入層、卷積層、池化層和全連接層的設(shè)計(jì),完成驗(yàn)證碼識(shí)別、圖像識(shí)別、手寫輸入識(shí)別等常見深度學(xué)習(xí)項(xiàng)目全程實(shí)戰(zhàn)。

當(dāng)前題目:關(guān)于python函數(shù)實(shí)現(xiàn)卷積的信息
分享路徑:http://muchs.cn/article18/doesddp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、靜態(tài)網(wǎng)站、標(biāo)簽優(yōu)化動(dòng)態(tài)網(wǎng)站、面包屑導(dǎo)航品牌網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化