日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Python-OpenCV 笔记2 -- 图像的基本属性和操作

發布時間:2025/3/12 7 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python-OpenCV 笔记2 -- 图像的基本属性和操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Python-OpenCV 筆記2 – 圖像的基本屬性和操作


1、圖片基本屬性

# 圖像的類型 type(image)# 圖像的大小,元組(行,列,通道) image.shape# 圖像的大小,值為shape三個元素的乘積 image.size # 圖像像素的數據類型 image.dtype

2、圖片基本操作

圖像縮放:

# 縮放為指定尺寸 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:偏移值,計算出的自適應閾值要加上該偏移值
# 灰度值超過 100 的變為 255,小于的為 0 ret, thresh1 = cv2.threshold(img, 100, 255, cv2.THRESH_BINARY)# 最佳閾值二值化 ret, thresh1 = cv2.threshold(img, 100, 255, cv2.THRESH_BINARY+cv2.THRESH_OTSU)# 自適應閾值,返回值沒有ret thresh1 = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 11, 5)


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:數值的插值類型
# Sobel算子求水平和垂直梯度 x = cv2.Sobel(img, cv2.CV_16S, 1, 0) y = cv2.Sobel(img, cv2.CV_16S, 0, 1)# 求梯度的絕對值 absX = cv2.convertScaleAbs(x) absY = cv2.convertScaleAbs(y)# 水平和垂直梯度的加權和 dst = cv2.addWeighted(absX, 0.5, absY, 0.5, 0)

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 -- 图像的基本属性和操作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。