opencv庫常用函數



常用opencv函數:
1、cv2.line():畫線——參數依次為:圖片路徑,起點和終點坐標值,顏色(rgb),線條寬度(像素)

2、dst = cvtColor(src,code,dst=None,dstCn=None):顏色空間轉換函數——參數依次為(原圖像,color轉化代碼,輸出圖像,輸出通道), 返回轉換后的圖像

3、ret, dst = cv2.threshold(src, thresh, maxval, type):固定閾值二值化——
src: 輸入圖,只能輸入單通道圖像,通常來說為灰度圖
dst: 輸出圖
thresh: 閾值
maxval: 當像素值超過了閾值(或者小於閾值,根據type來決定),所賦予的值
type:二值化操作的類型,包含以下5種類型: cv2.THRESH_BINARY; cv2.THRESH_BINARY_INV; cv2.THRESH_TRUNC; cv2.THRESH_TOZERO;cv2.THRESH_TOZERO_INV

4、cv2.findContours(image, mode, method[, contours[, hierarchy[, offset ]]])  :查找檢測物體的輪廓
opencv2返回兩個值:contours:hierarchy。注:opencv3會返回三個值,分別是img, countours, hierarchy
參數:
第一個參數是尋找輪廓的圖像;
第二個參數表示輪廓的檢索模式,有四種(本文介紹的都是新的cv2接口):
    cv2.RETR_EXTERNAL 表示只檢測外輪廓
    cv2.RETR_LIST 檢測的輪廓不建立等級關系
    cv2.RETR_CCOMP 建立兩個等級的輪廓,上面的一層為外邊界,里面的一層為內孔的邊界信息。如果內孔內還有一個連通物體,這個物體的邊界也在頂層。
    cv2.RETR_TREE 建立一個等級樹結構的輪廓。
第三個參數method為輪廓的近似辦法
    cv2.CHAIN_APPROX_NONE 存儲所有的輪廓點,相鄰的兩個點的像素位置差不超過1,即max(abs(x1-x2),abs(y2-y1))==1
    cv2.CHAIN_APPROX_SIMPLE 壓縮水平方向,垂直方向,對角線方向的元素,只保留該方向的終點坐標,例如一個矩形輪廓只需4個點來保存輪廓信息
    cv2.CHAIN_APPROX_TC89_L1,CV_CHAIN_APPROX_TC89_KCOS 使用teh-Chinl chain 近似算法
返回值
cv2.findContours()函數返回兩個值,一個是輪廓本身,還有一個是每條輪廓對應的屬性。

5、x,y,w,h = cv2.boundingRect(img):用一個最小的矩形,把找到的形狀包起來
參數img是一個二值圖;
返回四個值,分別是x,y,w,h;
x,y是矩陣左上點的坐標,w,h是矩陣的寬和高

6、edge = cv2.Canny(image, threshold1, threshold2[, edges[, apertureSize[, L2gradient ]]]) : 邊緣檢測
必要參數:
第一個參數是需要處理的原圖像,該圖像必須為單通道的灰度圖;
第二個參數是閾值1;
第三個參數是閾值2。
其中較大的閾值2用於檢測圖像中明顯的邊緣,但一般情況下檢測的效果不會那么完美,邊緣檢測出來是斷斷續續的。所以這時候用較小的第一個閾值用於將這些間斷的邊緣連接起來。
可選參數中apertureSize就是Sobel算子的大小。而L2gradient參數是一個布爾值,如果為真,則使用更精確的L2范數進行計算(即兩個方向的倒數的平方和再開放),否則使用L1范數(直接將兩個方向導數的絕對值相加)。
由於Canny只能處理灰度圖,所以將讀取的圖像轉成灰度圖

7、cv2.getStructuringElement( ) :返回指定形狀和尺寸的結構元素。
這個函數的第一個參數表示內核的形狀,有三種形狀可以選擇。
矩形:MORPH_RECT;
交叉形:MORPH_CROSS;
橢圓形:MORPH_ELLIPSE;
第二和第三個參數分別是內核的尺寸以及錨點的位置。一般在調用erode以及dilate函數之前,先定義一個Mat類型的變量來獲得
getStructuringElement函數的返回值: 對於錨點的位置,有默認值Point(-1,-1),表示錨點位於中心點。element形狀唯一依賴錨點位置,其他情況下,錨點只是影響了形態學運算結果的偏移。

8、cv2.morphologyEx(src, op, kernel) :進行各類形態學的變化
參數說明:
src傳入的圖片
op進行變化的方式
kernel表示方框的大小
op =  cv2.MORPH_OPEN 進行開運算,指的是先進行腐蝕操作,再進行膨脹操作
op = cv2.MORPH_CLOSE 進行閉運算, 指的是先進行膨脹操作,再進行腐蝕操作
開運算:表示的是先進行腐蝕,再進行膨脹操作
閉運算:表示先進行膨脹操作,再進行腐蝕操作

9、cv2.contourArea(contour,oriented = False):此函數利用格林公式計算輪廓的面積。對於具有自交點的輪廓,該函數幾乎肯定會給出錯誤的結果。
參數:
contour:輸入二維的向量,存儲為vector(C++)或Mat。
oriented:有方向的區域標志:
true:此函數依賴輪廓的方向(順時針或逆時針)返回一個已標記區域的值。
false:默認值。意味着返回不帶方向的絕對值。

10、cv2.fillPoly(img,ppt,npt,1,Scalar(255,255,255),lineType):繪制多邊形並對其填充
函數參數:
img:多邊形將被畫到img上
ppt:多邊形的頂點集為ppt
npt:繪制的多邊形頂點數目為npt
要繪制的多邊形數量為1
Scalar:多邊形的顏色定義為Scarlar(255,255,255),即RGB的值為白色
lineType:線型

11、cv2.polylines():用於繪制任何圖像上的多邊形。
用法: cv2.polylines(image, [pts], isClosed, color, thickness)
參數:
image: 這是上圓要繪制的圖像。
pts: 多邊形曲行數組。
npts: 多邊形頂點計數器陣列。
ncontours: 曲行數量。
isClosed: 指示繪制的折線是否閉合的標志。如果它們是閉合的,則該函數從每條曲線的最后一個頂點到其第一個頂點繪制一條線
color: 這是折線的顏色來繪制。對於BGR,我們傳遞一個元組。
thickness: 它是折線邊的厚度。
返回值:它返回一個圖像。

12、cv2.imwrite(file,img,num):保存一個圖像。
參數:第一個參數是要保存的文件名,第二個參數是要保存的圖像。可選的第三個參數,它針對特定的格式:對於JPEG,其表示的是圖像的質量,用0 - 100的整數表示,默認95;對於png ,第三個參數表示的是壓縮級別,默認為3。
注意:
cv2.IMWRITE_JPEG_QUALITY類型為 long ,必須轉換成 int
cv2.IMWRITE_PNG_COMPRESSION, 從0到9 壓縮級別越高圖像越小

13、cv2.imread(filepath,flags) :讀入圖像。
參數:這幅圖像應該在此程序的工作路徑,或者給函數提供完整路徑,第二個參數是要告訴函數應該如何讀取這幅圖片,可省略。
filepath:要讀入圖片的完整路徑
flags:讀入圖片的標志 
cv2.IMREAD_COLOR:默認參數,讀入一副彩色圖片,忽略alpha通道
cv2.IMREAD_GRAYSCALE:讀入灰度圖片
cv2.IMREAD_UNCHANGED:顧名思義,讀入完整圖片,包括alpha通道

14、cv2.imshow(wname,img):顯示圖像
參數:第一個參數是顯示圖像的窗口的名字,第二個參數是要顯示的圖像(imread讀入的圖像),窗口大小自動調整為圖片大小。
cv2.waitKey顧名思義等待鍵盤輸入,單位為毫秒,即等待指定的毫秒數看是否有鍵盤輸入,若在等待時間內按下任意鍵則返回按鍵的ASCII碼,程序繼續運行。若沒有按下任何鍵,超時后返回-1。參數為0表示無限等待。不調用waitKey的話,窗口會一閃而逝,看不到顯示的圖片。
cv2.destroyAllWindow()銷毀所有窗口
cv2.destroyWindow(wname)銷毀指定窗口

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM