文章目錄
- 基礎概念
- 1 . 二值化
- 2 . 灰度值
- 3 . ROI
- 4 . 通道
- 常用內置函式
- 1 . cv2.imread ( )
- 2 . cv2.imshow( )
- 3 . numpy.ones( )
- 4 . numpy.hstack( )和numpy.vstack( )
- 膨脹與腐蝕
- 1 . 什么是膨脹和腐蝕
- 2 . 代碼
基礎概念
1 . 二值化
二值化(Binarization)意將非二值影像經過計算變成二值影像,它進行影像分割(Segmentation)最簡單的一種方法,即后續影像處理技術的基礎(簡化后期的處理,提高處理速度),可以將灰度影像轉化成二值影像,一般用它將感興趣的目標和背景分離,比如:將人臉影像分為皮膚區域和非皮膚區域,將影像文字轉換成PDF文字(黑/白)等等,因此,影像二值化可以看做是聚類或者分類,
2 . 灰度值
灰度值指把白色與黑色之間按對數關系分成若干級,稱為“灰度等級”,范圍一般從0到255,白色為255,黑色為0,故黑白圖片也稱灰度影像,在醫學、影像識別領域有很廣泛的用途,
3 . ROI
ROI(region of interest),即感興趣區域,OpenCV使用rect可以提取出來影像的ROI,
4 . 通道
顏色通道大概分為分為R,G,B,A,L 這幾類,分別是:
R:紅色成分,通常范圍從0.0(沒有紅色)到1.0(全部的紅色)
G:綠色成分,通常范圍從0.0(沒有綠色)到1.0(全部的綠色)
B:藍色成分,通常范圍從0.0(沒有藍色)到1.0(全部的藍色)
A:alpha(不透明度)成分,通常范圍從0.0(完全透明)到1.0(不透明)
L:亮度成分,通常范圍從0.0(黑暗)到1.0(全白)
常用內置函式
1 . cv2.imread ( )
import cv2
img = cv2.imread('1.jpg', cv2.IMREAD_UNCHANGED) #包含alpha通道
img = cv2.imread('1.jpg', cv2.IMREAD_COLOR) #彩色影像
img = cv2.imread('1.jpg', cv2.IMREAD_GRAYSCALE) #灰度影像
2 . cv2.imshow( )
## 測驗圖片
pic = '1.jpg'
## a.影像的二值化 ,這里沒有做閾值處理
src = cv2.imread(pic,cv2.IMREAD_UNCHANGED)
## 原始圖
cv2.imshow('origin',src)
imshow(name,img)里面有兩個引數,第一個是視窗名字,第二個是影像
3 . numpy.ones( )
numpy.ones()函式回傳給定形狀和資料型別的新陣列,其中元素的值設定為1,
numpy.ones(shape, dtype=None, order=‘C’)
shape是一個int或一個int元組,用于定義陣列的大小, 如果我們僅指定一個int變數,則將回傳一維陣列, 對于一個整數元組,將回傳給定形狀的陣列,
dtype是一個可選引數,默認值為float, 它用于指定陣列的資料型別,例如int,
order是在記憶體中以行優先(C風格)還是列優先(Fortran風格)順序存盤多維陣列,
4 . numpy.hstack( )和numpy.vstack( )
numpy.hstack( )是影像水平合并 h:horizon
numpy.vstack( )是影像垂直合并 v : vertical
膨脹與腐蝕
1 . 什么是膨脹和腐蝕
影像的膨脹(Dilation)和腐蝕(Erosion)是兩種基本的形態學運算,主要用來尋找影像中的極大區域和極小區域,
膨脹:將影像中的高亮區域或白色部分進行擴張,其運行結果圖比原圖的高亮區域更大,
腐蝕:將影像中的高亮區域或白色部分進行縮減細化,其運行結果圖比原圖的高亮區域更小,
2 . 代碼
import cv2
import numpy as np
## 測驗圖片
pic = '1.jpg'
## a.影像的二值化 ,這里沒有做閾值處理
src = cv2.imread(pic,cv2.IMREAD_UNCHANGED)
## b.設定卷積核5*5
kernel = np.ones((5,5),np.uint8)
## c.影像先腐蝕后膨脹,迭代次數為1
erosion = cv2.erode(src,kernel,iterations=1)
dilation = cv2.dilate(erosion,kernel,iterations=1)
## 原始圖
cv2.imshow('origin',src)
## 結果圖
res1 = np.hstack((src,erosion,dilation)) ## np.hstack是將圖片橫向合并顯示
res2 = np.vstack((src,erosion,dilation)) ## np.hstack是將圖片豎向合并顯示
cv2.imshow('rsult1',res1)
cv2.imshow('rsult2',res2)
# 任意鍵終止
cv2.waitKey(0)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/389006.html
標籤:其他
上一篇:java 獲取視頻時長
