圖像的讀和寫操作
OpenCv 的 imread() 和 imwrite() 函數(shù)可以支持各種靜態(tài)圖像文件格式透葛,像png贷揽、jpg拆撼、tiff 等施无。圖片是由一個(gè)個(gè)像素點(diǎn)組成,每個(gè)像素的都由一個(gè)三元數(shù)組表示必孤,并且每個(gè)整型向量分別表示一個(gè) B,G,R通道猾骡。一個(gè)像素點(diǎn)用一個(gè)字節(jié)來表示區(qū)間為(0-255),我們可以通過shape屬性來查看圖像的結(jié)構(gòu)敷搪,它會(huì)返回行列兴想。
import cv2
image = cv2.imread("test.jpg") #讀取所在文件目錄下的圖片
print(image.shape)
返回值為:(606,646赡勘,3)
圖像質(zhì)量
我們也可以把一種圖片格式轉(zhuǎn)變成另一種格式嫂便,在這里小編講一下 PNG和JPG 的區(qū)別。PNG格式的圖片在壓縮時(shí)是由壓縮損耗的闸与,也就是通常說的有損壓縮毙替,而JPG格式是可以無(wú)損壓縮的,并且它比前者多了一個(gè)透明度的通道践樱。下面小編給大家舉個(gè)例子:
import cv2
image = cv2.imread("test.jpg",1)
# 第一個(gè)參數(shù)是文件名厂画,第二個(gè)參數(shù) “1”表示彩色格式,“0”表示灰度格式
cv2.imwrite("imagetest.jpg",image,[cv2.IMWRITE_JPEG_QUALTTY,50])
#50表示的是壓縮比拷邢,它是有損壓縮袱院,取值是[0,100]
cv2.imwrite("imgtest.png",image,[cv2.IMWRITE_PNG_COMPRESSION,0])
#無(wú)損壓縮瞭稼,透明度屬性 壓縮比取值是[0,9]
前面已經(jīng)說過圖像是針對(duì)像素點(diǎn)的忽洛,所以我們可以把一副圖片放在坐標(biāo)軸上面進(jìn)行操作。也就是說以矩陣的形式來對(duì)其進(jìn)行變換环肘。下面小編將舉一個(gè)例子欲虚,我們對(duì)圖片的(100,100)這個(gè)位置畫一條直線
"""
import cv2
"""
功能:讀取一張圖片廷臼,并顯示出來
"""
image = cv2.imread('test.jpg') # 根據(jù)路徑讀取一張圖片
cv2.namedWindow("Image") # 初始化一個(gè)名為Image的窗口
(b,g,r) = image[100,100]
for i in range (1,100):
image[10+i,100] = [0,0,255] #在(100苍在,100)-(200绝页,100)畫了一條紅色的線
cv2.imshow("Image", image) # 顯示圖片
cv2.waitKey(0)
輸出結(jié)果如下:
像素點(diǎn)的操作.PNG
小編還在成長(zhǎng),希望大家可以不吝賜教寂恬。