目錄
前言
1、什么是計(jì)算機(jī)視覺
2、圖片處理基礎(chǔ)操作
2.1 圖片處理:讀入圖像
2.2 圖片處理:顯示圖像
2.3?圖片處理:圖像保存
3、圖像處理入門基礎(chǔ)
3.1 圖像成像原理介紹
3.2 圖像分類
3.2.1 二值圖像
3.2.2灰度圖像
3.2.3彩色圖像(RGB)
4、像素處理操作
4.1 讀取像素
4.2 修改像素
4.3 使用python中的numpy修改像素點(diǎn)
4.3.1 讀取像素
4.3.2 修改像素
5、獲取圖像屬性
5.1 形狀
5.2 像素?cái)?shù)目
5.3 圖像類型
6、圖像ROI
7、通道的拆分與合并
7.2 合并
前言
本文將非常細(xì)致的講解相關(guān)與計(jì)算機(jī)視覺OpenCV的相關(guān)知識即操作,非常的簡單易懂。本文主要講解相關(guān)與計(jì)算機(jī)視覺的相關(guān)入門內(nèi)容,關(guān)于圖像處理的相關(guān)簡單操作,包括讀入圖像、顯示圖像及圖像相關(guān)理論知識。
推薦
前些天發(fā)現(xiàn)了一個巨牛的人工智能學(xué)習(xí)網(wǎng)站,通俗易懂,風(fēng)趣幽默,忍不住分享一下給大家。點(diǎn)擊跳轉(zhuǎn)到網(wǎng)站
1、什么是計(jì)算機(jī)視覺
- 計(jì)算機(jī)視覺是一門研究如何使機(jī)器“看”的科學(xué),更進(jìn)一步的說,就是是指用攝影機(jī)和電腦代替人眼對目標(biāo)進(jìn)行識別、跟蹤和測量等機(jī)器視覺,并進(jìn)一步做圖形處理,使電腦處理成為更適合人眼觀察或傳送給儀器檢測的圖像。作為一個科學(xué)學(xué)科,計(jì)算機(jī)視覺研究相關(guān)的理論和技術(shù),試圖建立能夠從圖像或者多維數(shù)據(jù)中獲取‘信息’的人工智能系統(tǒng)。這里所指的信息指Shannon定義的,可以用來幫助做一個“決定”的信息。因?yàn)楦兄梢钥醋魇菑母泄傩盘栔刑崛⌒畔?,所以?jì)算機(jī)視覺也可以看作是研究如何使人工系統(tǒng)從圖像或多維數(shù)據(jù)中“感知”的科學(xué)。
- 視覺是各個應(yīng)用領(lǐng)域,如制造業(yè)、檢驗(yàn)、文檔分析、醫(yī)療診斷,和軍事等領(lǐng)域中各種智能/自主系統(tǒng)中不可分割的一部分。由于它的重要性,一些先進(jìn)國家,例如美國把對計(jì)算機(jī)視覺的研究列為對經(jīng)濟(jì)和科學(xué)有廣泛影響的科學(xué)和工程中的重大基本問題,即所謂的重大挑戰(zhàn)(grand challenge)。計(jì)算機(jī)視覺的挑戰(zhàn)是要為計(jì)算機(jī)和機(jī)器人開發(fā)具有與人類水平相當(dāng)?shù)囊曈X能力。機(jī)器視覺需要圖象信號,紋理和顏色建模,幾何處理和推理,以及物體建模。一個有能力的視覺系統(tǒng)應(yīng)該把所有這些處理都緊密地集成在一起。
我們目前如果是在校學(xué)生,對于計(jì)算機(jī)視覺和機(jī)器學(xué)習(xí)的相關(guān)知識的學(xué)習(xí)是非常有用的,無論是對于自己的工作前景還是相關(guān)論文的撰寫都是非常有用的,而且目前對于計(jì)算機(jī)的相關(guān)知識已經(jīng)設(shè)計(jì)到了各個專業(yè)領(lǐng)域,其中包括醫(yī)學(xué)領(lǐng)域(計(jì)算機(jī)視覺分析CT成像)、電學(xué)領(lǐng)域(使用matlab及相關(guān)領(lǐng)域畫圖)、人臉識別和車牌識別等等。而且有想要做交叉學(xué)科的對于計(jì)算機(jī)可以和任意領(lǐng)域及進(jìn)行無障礙交叉。
由于我這個理工男的語文功底并不好,語言組織能力不強(qiáng),所以我們今天就啰嗦到這里,總結(jié)一下就是計(jì)算機(jī)視覺及機(jī)器學(xué)習(xí)等和計(jì)算機(jī)相關(guān)的東西特別重要!
2、圖片處理基礎(chǔ)操作
首先我們來看一段簡單的計(jì)算機(jī)視覺相關(guān)代碼:
import cv2
img=cv2.imread('path')#path指圖片相關(guān)路徑
cv2.imshow('Demo',img)
cv2.nameWindow('Demo')
cv2.waitKey(0)
cv2.destroyAllWindows()
這段代碼就可以在計(jì)算機(jī)中顯示出img的相關(guān)圖像。接下來我們講解一下每一步的相關(guān)操作。
2.1 圖片處理:讀入圖像
相關(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)
2.2 圖片處理:顯示圖像
相關(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的默認(rèn)數(shù)值。
delay<0,等待鍵盤點(diǎn)擊結(jié)束圖像顯示,也就是說當(dāng)我們敲擊鍵盤的時候,圖像結(jié)束顯示。
delay>0,等待delay毫秒后結(jié)束圖像顯示。
最后我們還需要顯示
cv2.destroyAllWindows()
把圖像從內(nèi)存中徹底刪除。
2.3?圖片處理:圖像保存
相關(guān)函數(shù):retval=cv2.imwrite(文件地址,文件名)
例如:
cv2.imwrite(‘D:\test.jpg’,img)
將img保存到了路徑D:\test.jpg
3、圖像處理入門基礎(chǔ)
3.1 圖像成像原理介紹
首先我們第一個要深深深深的刻在腦子里的概念就是:
生動一點(diǎn)表示就是這樣:
這樣就可以完美的展示出計(jì)算機(jī)圖像的成像原理,就是用一個個有顏色的像素點(diǎn)拼接而成的。
3.2 圖像分類
3.2.1 二值圖像
二值圖像表示的意思就是每一個像素點(diǎn)只由0和1構(gòu)成,0表示黑色,1表示白色,而且這里的黑色和白色是純黑和純白。所以我們看到的圖像也就是這個樣子。我們以官網(wǎng)麗娜為例子。
?
3.2.2灰度圖像
灰度圖像就是一個8位的位圖。什么意思呢?就是說00000001一直到11111111,這就是二進(jìn)制表示。如果表示成我們常用的十進(jìn)制就是0-255。其中0就表示純黑色,255就表示純白色,中間就是處于純黑色到純白色的相關(guān)顏色。我們還是以麗娜為例。
3.2.3彩色圖像(RGB)
計(jì)算機(jī)中所有的顏色都可以由R(紅色通道)、G(綠色通道)、B(藍(lán)色通道)來組成,其中每一個通道都有0-255個像素顏色組成。比如說R=234,G=252,B=4就表示黃色。顯示出來的也是黃色。所以說彩色圖像由三個面構(gòu)成,分別對應(yīng)R,G,B。我們還是以麗娜為例子:
所以說我們就可以知道復(fù)雜程度排序的話就是:彩色圖像-灰度圖像-二值圖像。所以我們在進(jìn)行人臉項(xiàng)目或者是車牌識別項(xiàng)目中最最最常用的操作就是將彩色圖像轉(zhuǎn)化為灰度圖像,然后將灰度圖像轉(zhuǎn)為最簡單的二值圖像。
4、像素處理操作
4.1 讀取像素
相關(guān)函數(shù):返回值=圖像(位置參數(shù)) 我們先以灰度圖像,返回灰度值:
p=img[88,142]
print§
這里我們就可以返回圖片坐標(biāo)[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ù)值。
4.2 修改像素
直接暴力修改。
對于灰度圖像, 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]等同于上方。
改動多個像素點(diǎn)
例如還是以彩色圖像為例子:
i[100:150,100:150]=[255,255,255]
意思也就是將圖像橫坐標(biāo)100到150和縱坐標(biāo)100到150的這個區(qū)間全部用白色替代。
4.3 使用python中的numpy修改像素點(diǎn)
4.3.1 讀取像素
相關(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)
4.3.2 修改像素
圖像名.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))
通過這段代碼我們就可以看得出來像素的更改。
對于彩色圖像也是一樣。
5、獲取圖像屬性
5.1 形狀
shape可以獲取圖像的形狀,返回值包含行數(shù)、列數(shù)通道數(shù)的元組。
灰度圖像返回行數(shù)列數(shù)
彩色圖像返回行數(shù)、列數(shù)、通道數(shù)。
import cv2
img1=cv2.imread('灰度圖像')
print(img1.shape)
5.2 像素?cái)?shù)目
size可以獲取圖像的像素?cái)?shù)目。
灰度圖像:行數(shù)列數(shù)
彩色圖像:行數(shù)列數(shù)*通道數(shù)
5.3 圖像類型
dtype返回的是圖像的數(shù)據(jù)類型
import cv2
img=cv2.imread('圖像名稱')
print(img.dtype)
6、圖像ROI
ROI(region of interest)表示感興趣區(qū)域
- 從被處理的圖像中以方框、圓、橢圓或者不規(guī)則多邊形等方式勾勒出需要處理的區(qū)域。
- 可以通過各種算子(operator)和函數(shù)來求ROI,并進(jìn)行下一步操作。
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()
我們還可以將感興趣的圖像加入到別的圖像當(dāng)中。
7、通道的拆分與合并
7.1 拆分
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("image\lenacolor.png")
b,g,r=cv2.split(a)
cv2.imshow("B",b)
cv2.imshow("G",g)
cv2.imshow("R",r)
cv2.waitKey()
cv2.destroyAllWindows()
7.2 合并
import cv2
import numpy as np
a=cv2.imread("image\lenacolor.png")
b,g,r=cv2.split(a)
m=cv2.merge([b,g,r])
cv2.imshow("merge",m)
cv2.waitKey()
cv2.destroyAllWindows()
我們將上方的拆分圖像進(jìn)行merge合并就可以得到以下結(jié)果:
文章來源:http://www.zghlxwxcb.cn/news/detail-759257.html
如果覺得博主的文章還不錯或者您用得到的話,可以免費(fèi)的關(guān)注一下博主,如果三連收藏支持就更好啦!這就是給予我最大的支持!文章來源地址http://www.zghlxwxcb.cn/news/detail-759257.html
到了這里,關(guān)于【opencv】計(jì)算機(jī)視覺基礎(chǔ)知識的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!