基於python圖像處理API

1.圖像處理庫

import cv2 as cv
from PIL import *

常用的圖像處理技術有圖像讀取,寫入,繪圖,圖像色彩空間轉換,圖像幾何變換,圖像形態學,圖像梯度,圖像邊緣檢測,圖像輪廓,圖像分割,圖像去噪,圖像加水印以及修復水印等

2.opencv常用的接口

cv.imread()
    讀取圖片,返回numpy
cv.imwrite()   
    寫入圖片
cv.cvtColor()   
    圖像色彩空間轉換
cv.add()
cv.subtract()
cv.multiply()
cv.divide()
cv.applyColorMap()
    減少了運算量,改變圖片風格,突出圖片特徵
cv.bitwise_and(參數1, 參數2)
    邏輯與
cv.bitwise_xor(參數1, 參數2)
    邏輯異或
cv.bitwise_or(參數1, 參數2)
    邏輯或
cv.bitwise_not(參數)
    圖像值取反操作
cv.split(src)   
    通道分離
cv.merge(mv)
    通道合併
cv2.inRange(hsv, lower, upper)   
    提取指定色彩範圍區域inRange
cv.meanStdDev()   
    均值和標準差
cv.minMaxLoc()
    最大最小值和相應的位置
cv.normalize()
    像素歸一化
cv.VideoCapture()
    視頻文件
cv.flip(src,flipcode,dst)
    圖像翻轉
cv.rectangle()   
    矩形
cv.circle()
    圓
cv.ellipse()
    橢圓
cv.calcHist()
    圖像直方圖
cv.equalizeHist()
    圖像直方圖均衡化可以用於圖像增強、對輸入圖像進行直方圖均衡化處理,提升後續對象檢測的準確率
cv.compareHist()
    圖像直方圖比較,就是計算兩幅圖像的直方圖數據,比較兩組數據的相似性,從而得到兩幅圖像之間的相似程度
cv.calcBackProject()
    圖像直方圖反向投影是通過構建指定模板圖像的二維直方圖空間與目標的二維直方圖空間,進行直方圖數據歸一化之後, 進行比率操作,對所有得到非零數值,生成查找表對原圖像進行像素映射之後,再進行圖像模糊輸出的結果
cv.blur()
    均值圖像模糊卷積
cv.GaussianBlur()
    高斯模糊
均值模糊 是卷積核的係數完全一致,高斯模糊考慮了中心像素距離的影響,對距離中心像素使用高斯分佈公式生成不同的權重係數給卷積核,然後用此卷積核完成圖像卷積得到輸出結果就是圖像高斯模糊之後的輸出
cv.medianBlur()
    中值濾波對圖像特定噪聲類型(椒鹽噪聲)會取得比較好的去噪效果,也是常見的圖像去噪聲與增強的方法之一
cv.fastNlMeansDenoisingColored()
    非局部均值濾波
cv.bilateralFilter()
    高斯雙邊模糊,卷積處理實現圖像模糊的同時對圖像邊緣不會造成破壞,濾波之後的輸出完整的保存了圖像整體邊緣(輪廓)信息
cv.pyrMeanShiftFiltering()
    均值遷移模糊,均值遷移模糊是圖像邊緣保留濾波算法中一種,經常用來在對圖像進行分水嶺分割之前去噪聲,可以大幅度提升分水嶺分割的效果
cv.integral()
    圖像積分圖算法
cv.edgePreservingFilter()
    快速的圖像邊緣濾波算法
cv.filter2D()
    自定義卷積核來自定義的濾波器
cv.Sobel()
    圖像梯度提取算子,梯度信息是圖像的最原始特徵數據,進一步處理之後就可以生成一些比較高級的特徵用來表示一張圖像實現基於圖像特徵的匹配,圖像分類等應用
cv.Laplacian()
    拉普拉斯算子更容易受到噪聲的擾動,所以經常對要處理的圖像首先進行一個高斯模糊,然後再進行拉普拉斯算子的邊緣提取,而且在一些場景中會把這兩步合併成爲一步,就是我們經常聽說的LOG算子
cv.convertScaleAbs()
    增強對比度
cv.addWeighted()
    USM銳化增強算法
cv.Canny()
    Canny編邊緣檢測器,有效的噪聲抑制,完整邊緣提取能力
cv.pyrUp()
cv.pyrDown()
    圖像金字塔
cv.matchTemplate()
    圖像模板匹配
cv.threshold()
    二值化
cv.adaptiveThreshold()
    自適應閾值算法
cv.connectedComponents()
    二值圖像聯通組件尋找
cv.connectedComponentsWithStats()
    二值圖像連通組件狀態統計
cv.findContours()
    獲取二值圖像的輪廓拓撲信息
cv.drawContours()
    繪製輪廓
cv.boundingRect()
cv.minAreaRect()
    求取輪廓外接矩形
cv.contourArea()
    輪廓點集計算面積
cv.arcLength()
    計算輪廓曲線的弧長
cv.approxPolyDP()
    圖像二值圖像的每個輪廓,可以使用輪廓逼近,逼近每個輪廓的真實幾何形狀,從而通過輪廓逼近的輸出結果判斷一個對象是什麼形狀
cv.fitEllipse()
    輪廓點進行擬合,生成一個擬合的圓形或者橢圓
cv.fitLine()
    直線擬合
cv.dilate()
    膨脹可以看成是最大值濾波,即用最大值替換中心像素點
cv.erode()
    腐蝕可以看出是最小值濾波,即用最小值替換中心像素點
cv.getStructuringElement()
    獲取結構元素
cv.morphologyEx()
    形態學的操作
    開操作可以刪除二值圖像中小的干擾塊,降低圖像二值化之後噪點過多的問題
    操作可以填充二值圖像中孔洞區域,形成完整的閉合區域連通組件
    頂帽操作有時候對於我們提取圖像中微小部分特別有用
cv.inpaint()
    圖像修復
cv.findHomography()
cv.warpPerspective()
    透視變換
cv.kmeans()
    KMeans數據分類
cv.QRCodeDetector()
cv.QRCodeDetector.detectAndDecode()
    二維碼檢測與識別

3.PIL庫接口

Image.fromarray()
    將numpy圖像轉Image
ImageFont.truetype("china.ttf", size=30)
    加載圖像字體庫
ImageDraw.Draw()
    繪圖
draw.text()
    圖像上添加水印

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章