一、什么是計算機視覺
計算機視覺是一門研究如何使機器“看”的科學,更進一步的說,就是是指用攝影機和電腦代替人眼對目標進行識別、跟蹤和測量等機器視覺,并進一步做圖形處理,使電腦處理成為更適合人眼觀察或傳送給儀器檢測的圖像。作為一個科學學科,計算機視覺研究相關(guān)的理論和技術(shù),試圖建立能夠從圖像或者多維數(shù)據(jù)中獲取‘信息’的人工智能系統(tǒng)。這里所指的信息指Shannon定義的,可以用來幫助做一個“決定”的信息。因為感知可以看作是從感官信號中提取信息,所以計算機視覺也可以看作是研究如何使人工系統(tǒng)從圖像或多維數(shù)據(jù)中“感知”的科學。 視覺是各個應(yīng)用領(lǐng)域,如制造業(yè)、檢驗、文檔分析、醫(yī)療診斷,和軍事等領(lǐng)域中各種智能/自主系統(tǒng)中不可分割的一部分。由于它的重要性,一些先進國家,例如美國把對計算機視覺的研究列為對經(jīng)濟和科學有廣泛影響的科學和工程中的重大基本問題,即所謂的重大挑戰(zhàn)(grand challenge)。 計算機視覺的挑戰(zhàn)是要為計算機和機器人開發(fā)具有與人類水平相當?shù)囊曈X能力。機器視覺需要圖象信號,紋理和顏色建模,幾何處理和推理,以及物體建模。一個有能力的視覺系統(tǒng)應(yīng)該把所有這些處理都緊密地集成在一起。![e9f420ac-3a2b-11ed-9e49-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/BE/wKgZomTnI3-AT4-gAAFpcjIPwho096.png)
二、圖片處理基礎(chǔ)操作
首先我們來看一段簡單的計算機視覺相關(guān)代碼:
import cv2img=cv2.imread('path')#path指圖片相關(guān)路徑cv2.imshow('Demo',img)cv2.nameWindow('Demo')cv2.waitKey(0)cv2.destroyAllWindows()
這段代碼就可以在計算機中顯示出img的相關(guān)圖像。接下來我們講解一下每一步的相關(guān)操作。
圖片處理:讀入圖像
相關(guān)函數(shù):image=cv2.imread(文件名相關(guān)路徑[顯示控制參數(shù)])
文件名:完整的路徑。
其中參數(shù)包括:
cv.IMREAD_UNCHANGED :表示和原圖像一致
cv.IMREAD_GRAYSCALE : 表示將原圖像轉(zhuǎn)化為灰色圖像。
cv.IMREAD_COLOR:表示將原圖像轉(zhuǎn)化為彩色圖像。
例如:cv2.imread(‘d:image.jpg’,cv.IMREAD_UNCHANGED)
圖片處理:顯示圖像
相關(guān)函數(shù):None=cv2.imshow(窗口名,圖像名)例如:cv2.imshow(“demo”,image)
但是在OpenCV中我們圖像顯示還是要加上相關(guān)約束:retval=cv2.waitKey([delay])
如果沒有這個限制,那么顯示的圖像就會一閃而過,就會發(fā)生錯誤。其中delay參數(shù)包括:dealy=0,無限等待圖像顯示,直到關(guān)閉。也是waitKey的默認數(shù)值。delay<0,等待鍵盤點擊結(jié)束圖像顯示,也就是說當我們敲擊鍵盤的時候,圖像結(jié)束顯示。delay>0,等待delay毫秒后結(jié)束圖像顯示。最后我們還需要顯示
cv2.destroyAllWindows()
把圖像從內(nèi)存中徹底刪除。
圖片處理:圖像保存
相關(guān)函數(shù):retval=cv2.imwrite(文件地址,文件名)例如
cv2.imwrite(‘D:test.jpg’,img)
將img保存到了路徑D: est.jpg
三、圖像處理入門基礎(chǔ)
圖像成像原理介紹
首先我們第一個要深深深深的刻在腦子里的概念就是:![eaf91a84-3a2b-11ed-9e49-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/BE/wKgZomTnI3-AH5PpAAbodclogdY207.png)
![eb511f54-3a2b-11ed-9e49-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/BE/wKgZomTnI3-ATHqQAA2R15NljIc413.png)
圖像分類
圖像一般分為三類:一、二值圖像
二值圖像表示的意思就是每一個像素點只由0和1構(gòu)成,0表示黑色,1表示白色,而且這里的黑色和白色是純黑和純白。所以我們看到的圖像也就是這個樣子。我們以官網(wǎng)麗娜為例子。
![ec0ca968-3a2b-11ed-9e49-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/BE/wKgZomTnI3-AfRLYAAEAfpVNItk585.png)
![ec603a1a-3a2b-11ed-9e49-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/BE/wKgZomTnI3-APN6ZAAAYEkBvCgw892.png)
灰度圖像就是一個8位的位圖。什么意思呢?就是說00000001一直到11111111,這就是二進制表示。如果表示成我們常用的十進制就是0-255。其中0就表示純黑色,255就表示純白色,中間就是處于純黑色到純白色的相關(guān)顏色。我們還是以麗娜為例。
![ec795270-3a2b-11ed-9e49-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/BE/wKgZomTnI3-ADpyIAAFAeFKvT-4069.png)
![ece7e87a-3a2b-11ed-9e49-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/BE/wKgZomTnI4CAG3a0AAAxEC0WFz8834.png)
![ed188cd2-3a2b-11ed-9e49-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/BE/wKgZomTnI4CAI2YDAAHlBkHnVKM964.png)
![ed442220-3a2b-11ed-9e49-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/BE/wKgZomTnI4CATfX9AAJiJAJM1uI821.png)
四、像素處理操作
讀取像素
相關(guān)函數(shù):返回值=圖像(位置參數(shù)) 我們先以灰度圖像,返回灰度值:p=img[88,142]
print§
這里我們就可以返回圖片坐標[88,142]處的灰度值。
然后我們以彩色圖像為例子:
我們知道彩色圖像由BGR三個通道的值構(gòu)成。那么我們需要返回三個數(shù)值:blue=img[78,125,0]
green=img[78,125,1]
red=img[78,125,2]
print(blue,green,red)
這樣我們就返回了這三個數(shù)值。
修改像素
直接暴力修改。 對于灰度圖像, img[88,99]=255 對于彩色圖像, img[88,99,0]=255 img][88,99,1]=255 img[88,99,2]=255這里也可以寫成 img[88,99]=[255,255,255]等同于上方。 改動多個像素點 例如還是以彩色圖像為例子:i[100:150,100:150]=[255,255,255]
意思也就是將圖像橫坐標100到150和縱坐標100到150的這個區(qū)間全部用白色替代。
使用python中的numpy修改像素點
讀取像素 相關(guān)函數(shù):返回值=圖像.item(位置參數(shù)) 我們以灰度圖像為例: o=img,item(88,142) print(o) 對于彩色圖像我們還是: blue=img.item(88,142,0) green=img.item(88,142,1) red=img.item(88,142,2) 然后print(blue,green,red) 修改像素 圖像名.itemset(位置,新的數(shù)值) 我們以灰度圖像為例子: img.itemset((88,99),255) 對于BGR圖像: img.itemset((88,99,0),255) img.itemset((88,99,1),255) img.itemset((88,99,2),255)import cv2
import numpy as np
i=cv2.imread('path',cv2.IMREAD_UNCHANGED)
print(i.item(100,100))
i.itemset((100,100),255)
print(i,item(100,100))
通過這段代碼我們就可以看得出來像素的更改。 對于彩色圖像也是一樣。
五、獲取圖像屬性
形狀
shape可以獲取圖像的形狀,返回值包含行數(shù)、列數(shù)通道數(shù)的元組。 灰度圖像返回行數(shù)列數(shù) 彩色圖像返回行數(shù)、列數(shù)、通道數(shù)。import cv2
img1=cv2.imread('灰度圖像')
print(img1.shape)
像素數(shù)目
size可以獲取圖像的像素數(shù)目。 灰度圖像:行數(shù)列數(shù) 彩色圖像:行數(shù)列數(shù)*通道數(shù)圖像類型
dtype返回的是圖像的數(shù)據(jù)類型import cv2
img=cv2.imread('圖像名稱')
print(img.dtype)
六、圖像ROI
ROI(region of interest)表示感興趣區(qū)域-
從被處理的圖像中以方框、圓、橢圓或者不規(guī)則多邊形等方式勾勒出需要處理的區(qū)域。
-
可以通過各種算子(operator)和函數(shù)來求ROI,并進行下一步操作。
import cv2
import numpy as np
a=cv2.imread('path')
b=np.ones((101,101,3))
b=a[220:400,250:350]
a[0:101,0:101]=b
cv2.imshow('o',a)
cv2.waitKey()
cv2.destroyAllWindows()
![ee022cde-3a2b-11ed-9e49-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/BE/wKgZomTnI4CAcHIuAAG8bkzmyb0171.png)
七、通道的拆分與合并
拆分import cv2
img=cv2.imread('圖像名')
b = img[ : , : , 0 ]
g = img[ : , : , 1 ]
r = img[ : , : , 2 ]
我們在OpenCV中有專門拆分通道的函數(shù): cv2.split(img)import cv2
import numpy as np
a=cv2.imread("imagelenacolor.png")
b,g,r=cv2.split(a)
cv2.imshow("B",b)
cv2.imshow("G",g)
cv2.imshow("R",r)
cv2.waitKey()
cv2.destroyAllWindows()
![ef272bf0-3a2b-11ed-9e49-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/BE/wKgZomTnI4CActbTAAFZOibxZYI314.png)
import cv2
import numpy as np
a=cv2.imread("imagelenacolor.png")
b,g,r=cv2.split(a)
m=cv2.merge([b,g,r])
cv2.imshow("merge",m)
cv2.waitKey()
cv2.destroyAllWindows()
我們將上方的拆分圖像進行merge合并就可以得到以下結(jié)果:
![efc07116-3a2b-11ed-9e49-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/BE/wKgZomTnI4CAG7ktAALqIwx0lmE878.png)
審核編輯 :李倩
-
機器視覺
+關(guān)注
關(guān)注
162文章
4415瀏覽量
120806 -
計算機視覺
+關(guān)注
關(guān)注
8文章
1701瀏覽量
46159 -
圖片處理
+關(guān)注
關(guān)注
0文章
17瀏覽量
6976
原文標題:計算機視覺及其圖像處理操作
文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
計算機視覺有哪些優(yōu)缺點
計算機視覺技術(shù)的AI算法模型
機器視覺和計算機視覺有什么區(qū)別
計算機視覺的五大技術(shù)
計算機視覺的工作原理和應(yīng)用
機器人視覺與計算機視覺的區(qū)別與聯(lián)系
計算機視覺與人工智能的關(guān)系是什么
計算機視覺與智能感知是干嘛的
計算機視覺和機器視覺區(qū)別在哪
計算機視覺和圖像處理的區(qū)別和聯(lián)系
深度學習在計算機視覺領(lǐng)域的應(yīng)用
機器視覺與計算機視覺的區(qū)別
計算機視覺的主要研究方向
計算機視覺的十大算法
![<b class='flag-5'>計算機</b><b class='flag-5'>視覺</b>的十大算法](https://file.elecfans.com/web2/M00/4E/DC/poYBAGLCjeiALm_WAAAYmfR7Qec474.png)
評論