目前人工智能Artificial Intelligence主要分爲兩大分支:python
CV主要是研究如何讓機器看懂世界的一種技術,經過各類光學傳感器來代替人眼對目標對象進行識別,跟蹤和檢測,使機器可以處理輸入的各類圖像和視頻。編程
NLP主要是研究如何機器讀懂世界的一種技術,最終執行如語言翻譯、智能客服等。網絡
由於目前所從事的項目都是基於CV的,因此我來總結一下CV的相關知識。從上述簡介能夠看CV是要讓機器看懂世界,那麼最直觀的就是傳遞圖像或視頻給機器。那麼咱們就須要瞭解圖像和視頻的基本知識,以下所示:學習
說到圖像,最直觀的就是一張靜態圖片。而圖像又能夠分爲位圖圖像和矢量圖像。測試
位圖圖像又稱點陣圖像或柵格圖像,是指由不少個點按照指定的顏色和必定的順序組成的矩形網絡。當一張位圖持續放大到必定比例後,即可以很清楚看到每一個矩形網格。以下所示:動畫
常見的圖像格式擴展名爲:JPG、BMP、PNG、JPEG等ui
矢量圖也稱爲面向對象的圖像或繪圖圖像,一般由點、直線或多邊形等基於數學對象的幾何圖表示圖像。其最大的特色是放大圖像後不會失真且和分辨率無關。以下所示:人工智能
常見的矢量圖格式擴展名爲:ai,cdr等。翻譯
組成圖像的最基本單元3d
像素(pixel,簡寫爲px)這個概念,也能夠當作是Picture和Element兩個單詞的頭組成,以下所示:
pix~picture~ + el~element~ = pixel
位圖圖像長度和高度兩個方向上的像素數目
咱們常說的圖片大小其實就是說這張圖像的長和高兩個方向各有多少個像素點,如圖片大小爲1920*1080,則意味着長度方向上有1920個像素點,高度方向上有1080個像素點,則總的像素點爲:1920*1080=2073600,也就是咱們常說的這個圖像是200萬像素級別。
圖像分辨率PPI(Pixel Per Inch)指的是每英寸像素數。尺寸相同的狀況下,分辨率越高,像素點就越小,圖像越清晰。
例1*1英寸的圖像,50PPI,則像素總數爲:50*50=2500
文件所佔用存儲空間的大小
PhotoShop特有的圖像文件格式,可記錄圖層、通道、顏色模式,參考線及文件信息屬性,佔用空間較大
一種有損壓縮文件格式,設置了12個壓縮級別。它是將人眼很難察覺的冗餘圖像和彩色數據去除。所以圖像佔用存儲空間較小且圖像品質受到不多影響。該格式支持RGB、灰度等顏色模式。但不支持Alpha通道和圖層。
一種有損壓縮文件格式,丟失的不是圖像的像素,而是圖像的色彩。經常使用於保存爲網頁數據傳輸的圖像文件,缺點是不能存儲超過256色的圖像,不支持圖層和Alpha通道
該圖像格式吸收了GIF和JPEG的優勢,既有豐富的色彩和較高的壓縮比,又支持透明圖像的製做,可邊下載邊顯示,但不支持動畫。
Windows中的標準圖像格式,支持RGB、索引顏色、灰度和顏色模式,但不支持Alpha通道
指色彩的種類和名稱,如紅、橙、黃.... 取值範圍 0°~360°,每一個角度能夠表明一種顏色。常以紅色爲0度(360度);黃色爲60度;綠色爲120度;青色爲180度;藍色爲240度;品紅色爲300度。而咱們描述某一物體的顏色時,便是以色相進行描述的。
經常使用於表達顏色的強度或純度,即用 0%(純灰色) 至 100%(徹底飽和) 的值描述了相同色相下色彩純度的變化。數值越大,顏色中的灰色越少,顏色越鮮豔,呈現一種從灰度到純色的變化。一句話總結就是顏色中的灰色量含量的高低.
經常使用於表示顏色的相對明暗程度,其做用是控制色彩的明暗變化。一樣使用了 0%(黑色) 至 100%(白色) 的取值範圍。數值越小,色彩越暗,越接近於黑色;數值越大,色彩越亮,越接近於白色。一句話總結就是顏色中混合了多少白色或黑色。
指不一樣顏色之間的差別。對比度越大,兩種顏色之間的反差也就越大,反之顏色越相近。如提升一張灰度圖像的對比度,則會使圖像變得黑白鮮明,而下降對比度時,圖像中不一樣部分的顏色則趨於相同,最終會使整張圖像變爲灰色。
色彩模式是指用數據表示顏色的一種表示方法。在計算機領域內Red、Grenn、Blue稱之爲基色份量。
經過這三種基色份量依據不一樣的比例能夠調和出不一樣的顏色。在計算機領域中,RGB的取值爲0~255,共256(2^8^)個值。以下所示在Windows自定義顏色
經過RGB混合的方式,咱們可計算出所表示的總顏色爲256^3^=16777216,這便是你們常見的1600萬色,而每一種能夠用8bit來表示,因此表示三種顏色須要佔用3*8=24bit,而這個顏色已經超出人眼可以識別的範圍,故又稱之爲真彩色。
CMYK是模擬印刷油墨的基本四色表示,以純青色、洋紅色、黃色、黑色去調配顏色,這種方式是以打印紙上的油墨的光吸取特性爲基礎的印刷模式。所以彩色印刷叫做四色印刷。
C:Cyan 青色
M:Magenta 品紅色
Y:Yellow 黃色
K:blacK 黑色
指用單一色調錶示圖像,一個像素的顏色能夠用8bit來表示,所以灰度模式的範圍爲0~255共256個灰度級別,最高爲純黑、最低爲純白,便是黑->灰->白的過渡。
灰度模式是不可逆的,一旦轉換就會丟失顏色信息。
在RGB模式中,三個值相等的時候顯示的就是灰度色彩模式
是光度份量和兩個色度份量組成。
L:表明亮度,範圍0~100%,記錄圖像的細節,但不記錄顏色
A:從綠到紅的光譜變化,範圍在-120~120
B:從藍到黃的光譜變化,範圍-120~120
彩色圖像去掉彩色信息就變爲灰度模式,那灰度模式去掉灰度信息,就只剩下黑與白,這種狀況下,咱們稱之爲位圖模式。
根據圖像中的像素來查找顏色,將查找的顏色定義爲一個顏色表,用以存放並索引圖像 中的顏色。索引圖像最多隻可包含256種顏色,所以容易出現失真的狀況。
以上總結了這麼多,下面咱們來使用OpenCV動手實踐一下,示例代碼以下所示:
import cv2 import numpy as np # 原始圖片 imgPath=r"F:\編程資料\編程工程\OpenCV學習筆記\04其餘\01測試圖片\TestImage.jpg" # 保存爲灰度圖片 saveImgAsGrayPath=r"F:\編程資料\編程工程\OpenCV學習筆記\04其餘\01測試圖片\SaveAsGrayImg.png" # 保存爲LAB模式圖片 saveImgAsLabPath=r"F:\編程資料\編程工程\OpenCV學習筆記\04其餘\01測試圖片\SaveAsLABImg.png" # 保存爲位圖圖片 SaveImgAsBitPath=r"F:\編程資料\編程工程\OpenCV學習筆記\04其餘\01測試圖片\SaveAsGrayBit.png" # 以彩色模式讀入 img=cv2.imdecode(np.fromfile(imgPath,dtype=np.uint8),cv2.IMREAD_COLOR) # 保存灰度圖像 gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) cv2.imencode(".jpg",gray)[1].tofile(saveImgAsGrayPath) # 保存爲LAB模式 lab=cv2.cvtColor(img,cv2.COLOR_BGR2LAB) cv2.imencode(".jpg",lab)[1].tofile(saveImgAsLabPath) # 轉換爲位圖模式 binaryImg=cv2.imdecode(np.fromfile(saveImgAsGrayPath,dtype=np.uint8),cv2.IMREAD_GRAYSCALE) _,binary=cv2.threshold(binaryImg,100,255,cv2.THRESH_BINARY) cv2.imencode(".jpg",binary)[1].tofile(SaveImgAsBitPath)
最終生成的結果以下所示: