圖像基本操作

圖像基本操作

圖像像素級處理

opencv
  • 讀取像素
    • 返回值 = 圖像(位置參數)
    • 灰度圖像:返回灰度值——p=img[88, 142]——print(p)
    • RGB圖像:返回BGR的值
      • blue=img[78, 125, 0] —— print(blue)
      • green=img[78, 125, 1] —— print(green)
      • red=img[78, 125, 2] —— print(red)
      • p=img[78, 125]——print(p)——三個值
  • 修改像素
    • 灰度圖像:img[88, 99]=255
    • RGB圖像:
      • img[88, 99, 0]=255
      • img[88, 99, 1]=255
      • img[88, 99, 2]=255
      • img[88, 99]=[255,255,255]
numpy
  • 讀取像素
    • 返回值 = 圖像.item(位置參數)
    • 灰度圖像:返回灰度值——p=img.item(88, 142)——print(p)
    • RGB圖像:返回BGR的值
      • blue=img.item(78, 125, 0) —— print(blue)
      • green=img.item(78, 125, 1) —— print(green)
      • red=img.item(78, 125, 2) —— print(red)
      • p=img.item(78, 125)——print(p)——三個值
  • 修改像素值
    • 圖像名.itemset(位置, 新值)
    • 灰度圖像:img.itemset((88, 99), 255)
    • RGB圖像:
      • img.itemset((88, 99, 0), 255)
      • img.itemset((88, 99, 1), 255)
      • img.itemset((88, 99, 2), 255)
獲取圖像屬性
  • 形狀:行、列、通道數
    • shape可以獲取圖像的形狀,返回包含行數、列數、通道數的元組
    • 灰度:返回行數、列數——img.shape——(512, 512)
    • 彩度:返回行數、列數、通道數——img.shape——(512, 512, 3)
  • 像素數目
    • size可以獲取圖像的像素數目
    • 灰度:返回 行數*列數——img.size
    • 彩度:返回 行數*列數*通道數
  • 圖像的數據類型
    • dtype返回的是圖像的數據類型
    • 例:img.dtype——uint8
圖像ROI
  • ROI (region of interest),感興趣區域
  • 從被處理的圖像以方框、圓、橢圓、不規則多邊形等方式勾勒出需要處理的區域
  • 可以通過各種算子(Operator)和函數來求得感興趣區域ROI,並進行圖像的下一步處理
  • face=a[220:400, 250:350]——感興趣區域——可以複製什麼的

圖像通道操作

  • 拆分通道
import cv2
img = cv2.imread('lena.png')
## 方式一
b = img[:, :, 0]
g = img[:, :, 1]
r = img[:, :, 2]
## 方式二
b, g, r = cv2.split(img)
## 方式三
b = cv2.split(a)[0]
g = cv2.split(a)[1]
r = cv2.split(a)[2]
  • 合併通道:cv2.merge([b,g,r])
    • 注意順序

圖像運算

加法運算

Numpy

  • 取模加法——運算方式:結果=圖像1+圖像2
    • 超過255:%255

OpenCV

  • 飽和運算——運算方式:結果=cv2.add(圖像1,圖像2)
    • 超過255:255

注意:

  • 參與運算的圖像大小、類型必須一致
  • vs加法運算:有權重
  • 函數addWeightedcv2.addWeighted(src1, alpha, src2, beta, gamma)
    • src1:圖像1
    • alpha:圖像1權重
    • src2:圖象2
    • beta:圖像2權重
    • gamma:亮度調節值——不能省略——不想調,設0
  • 例:cv2.addWeighted(img1, 0.3, img2, 0.6, 0)
圖像融合
  • 將2張或2張以上的圖像信息的融合到1張圖像上
  • 融合的圖像含有更多的信息、能夠更方便人來觀察或計算機處理

幾何變換

圖像縮放
  • 函數resize
  • 格式:dst = cv2.resize(src, dsize[, dst[ ,fx[ ,fy[ ,interpolation]]]])
    • src:原始圖像
    • dsize:縮放大小
      • 例:cv2.resize(a, (122, 123)):縮放成122列,123行
    • fx, fy:縮放大小
      • 例:cv2.resize(a, None, fx=0.5, fy=0.7)
圖像翻轉
  • 函數flip
  • 格式:dst = cv2.flip(src, flipCode)
    • src:原始圖像
    • flipCode
      • =0:以X軸爲對稱軸翻轉
      • >0:以Y軸爲對稱軸翻轉
      • <0:以X軸、Y軸方向同時翻轉
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章