當前位置:
首頁 >
Python-OpenCV 笔记2 -- 图像的基本属性和操作
發布時間:2025/3/12
7
豆豆
生活随笔
收集整理的這篇文章主要介紹了
Python-OpenCV 笔记2 -- 图像的基本属性和操作
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Python-OpenCV 筆記2 – 圖像的基本屬性和操作
1、圖片基本屬性
# 圖像的類型 type(image)# 圖像的大小,元組(行,列,通道) image.shape# 圖像的大小,值為shape三個元素的乘積 image.size # 圖像像素的數據類型 image.dtype2、圖片基本操作
圖像縮放:
# 縮放為指定尺寸 img1 = cv2.resize(img1, (1000, 750))圖像顏色轉換:
# 彩色圖轉灰度圖 img = cv2.cvtColor(img1, cv2.COLOR_RGB2GRAY)圖像通道分離和合并:
# 注意通道的順序是b, g, r # 圖像通道分離 b,g,r = cv2.split(img) b = cv2.split(img)[0] g = cv2.split(img)[1] r = cv2.split(img)[2]# 圖像通道合并 img = cv2.merge([b,g,r])3、圖像濾波
均值濾波(Averaging):
# 函數原型 blur(src, ksize[, dst[, anchor[, borderType]]] )# 實例 blur = cv2.blur(img, (3,3))- src:輸入圖片
- ksize:滑動窗口的大小,(x, x),x通常為奇數3,5,7,9
- dst:輸出圖片
- anchor:錨點,即滑動窗口的計算點,(-1, -1)表示中心點
- borderType:超出圖像的像素點插值方式
高斯濾波(Gaussian Blurring):
# 函數原型 GaussianBlur(src, ksize, sigmaX[, dst[, sigmaY[, borderType]]])# 實例 blur = cv2.GaussianBlur(img,(5,5),0)- sigmaX:高斯核X方向的標準差,XY都等于0時按照ksize的寬和高來定
- sigmaY:高斯核Y方向的標準差,等于0或默認時=sigmaX
- 標準差越大中間元素的占比越大
中值濾波(Median Blurring):
# 函數原型 medianBlur(src, ksize[, dst])# 實例 median = cv2.medianBlur(img,5)- ksize:核大小,一個正整數,通常3,5,9
- 對椒鹽噪聲效果好
雙邊濾波(Bilateral Filtering):
# 函數原型 bilateralFilter(src, d, sigmaColor, sigmaSpace[, dst[, borderType]])# 實例 blur = cv2.bilateralFilter(img,9,75,75)- 邊緣較其它濾波清晰,比較耗時
- d:核的直徑,推薦<=5
- sigmaColor:顏色空間參數,越大表示較遠的相同顏色像素值影響越大
- sigmaSpace:坐標空間參數,越大時離得較遠的像素影響越大
4、圖像二值化
函數原型:
# 普通閾值 threshold(src, thresh, maxval, type, dst=None)# 自適應閾值,圖片分成小塊計算閾值 adaptiveThreshold(src,maxValue,adaptiveMethod,thresholdType,blockSize,C,dst=None)- src:輸入圖片
- thresh:灰度值閾值
- maxval:最大的灰度值
- type:二值化方法。THRESH_BINARY,THRESH_BINARY_INV,THRESH_TRUNC,THRESH_TOZERO , THRESH_TOZERO_INV ,THRESH_OTSU(最佳閾值)
- dst:輸出圖片
- maxValue:與 maxval 相同
- adaptiveMethod:ADAPTIVE_THRESH_MEAN_C(通過平均的方法取得平均值)、ADAPTIVE_THRESH_GAUSSIAN_C(通過高斯取得高斯值) ,這兩種方法最后得到的結果要減掉參數里面的C值
- thresholdType:與 type 相同
- blockSize:計算閾值的鄰域塊大小,正方形,必須為奇數
- C:偏移值,計算出的自適應閾值要加上該偏移值
5、圖像梯度圖
Sobel 算子:
函數原型:
Sobel(src, ddepth, dx, dy, dst=None, ksize=None, scale=None, delta=None, borderType=None)- src:待計算的輸入圖
- ddepth:圖片的深度
- dx:x軸的微分階數
- dy:y軸的微分階數
- dst:輸出圖片
- ksize:算子的核大小,必須為1、3、5、7
- scale:微分值的縮放系數
- delta:微分值的偏差值
- borderType:數值的插值類型
6、Canny邊緣檢測
Canny邊緣檢測原理
# 函數原型 Canny(image, threshold1, threshold2[, edges[, apertureSize[, L2gradient]]]) Canny(dx, dy, threshold1, threshold2[, edges[, L2gradient]])# 實例 edges = cv2.Canny(img,100,200)- image:輸入圖片,必須為單通道灰度圖
- dx:輸入圖片的x方向梯度圖
- dy:輸入圖片的y方向梯度圖
- threshold1:選擇是否保留某點梯度的閾值低值
- threshold2:選擇是否保留某點梯度的閾值高值
- apertureSize:Sobel算子的核大小
總結
以上是生活随笔為你收集整理的Python-OpenCV 笔记2 -- 图像的基本属性和操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: spring.mvc.static-pa
- 下一篇: 开发 数组里面的字典_Redis字典结构