溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

OpenCV實(shí)現(xiàn)讀取與寫入圖片的方法

發(fā)布時(shí)間:2020-10-28 20:15:50 來源:億速云 閱讀:298 作者:Leah 欄目:開發(fā)技術(shù)

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)OpenCV實(shí)現(xiàn)讀取與寫入圖片的方法,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

1.讀取圖片

cv2.imread(filename, flags)
  • -filename: 文件名稱
  • -flags: 0 讀入灰度圖片,1 讀入彩色圖片
cv2.imshow(winname, mat)
  • -winname: 窗口名字
  • -mat: 要展示的圖片矩陣
     

cv2.waitKey(0):暫停程序,這樣才能顯示圖片

import cv2
img = cv2.imread("img.jpg", 1)
cv2.imshow('img', img)
cv2.waitKey(0)

OpenCV實(shí)現(xiàn)讀取與寫入圖片的方法

2.圖片寫入

讀取圖片要經(jīng)歷四個(gè)步驟:

1.文件的讀取
2.封裝格式解析(jpg,png等格式)
3.數(shù)據(jù)解碼
4.數(shù)據(jù)加載

這樣讀取的圖片為圖片的原始數(shù)據(jù)

cv2.imwrite(filename, img)
  • -filename: 圖片名稱
  • -img: 圖片數(shù)據(jù)
     
import cv2
img = cv2.imread("img.jpg", 1)
cv2.imwrite('img1.jpg', img)

True

2.1圖像質(zhì)量

1.jpg圖片文件是以圖片質(zhì)量為代價(jià)進(jìn)行壓縮的,屬于有損壓縮

cv2.IMWRITE_JPEG_QUALITY: 表示當(dāng)前的圖片質(zhì)量,壓縮范圍為0-100,不同壓縮比對應(yīng)不同的圖片大小,下面我們來體驗(yàn)一下:

import cv2
img = cv2.imread("img.jpg", 1)
cv2.imwrite('imgTest.jpg', img, [cv2.IMWRITE_JPEG_QUALITY, 0])

True

原圖像如下:

OpenCV實(shí)現(xiàn)讀取與寫入圖片的方法

圖片大小為400kb

壓縮之后的圖片為:

OpenCV實(shí)現(xiàn)讀取與寫入圖片的方法

圖片大小為40kb, 同時(shí)出現(xiàn)了嚴(yán)重的馬賽克現(xiàn)象

import cv2
img = cv2.imread("img.jpg", 1)
cv2.imwrite('imgTest2.jpg', img, [cv2.IMWRITE_JPEG_QUALITY, 50])

True

壓縮之后的圖片為:

OpenCV實(shí)現(xiàn)讀取與寫入圖片的方法

圖片大小為200kb,馬賽克現(xiàn)象沒那么的嚴(yán)重

2.png圖片格式的壓縮屬于無損壓縮,可以設(shè)置透明度

import cv2
img = cv2.imread("img.jpg", 1)
cv2.imwrite('imgTest1.png', img)

True

import cv2
img = cv2.imread("img.jpg", 1)
cv2.imwrite('imgTest2.png', img, [cv2.IMWRITE_PNG_COMPRESSION, 0])

True

壓縮之后的圖像為:

OpenCV實(shí)現(xiàn)讀取與寫入圖片的方法

圖片大小為:5.92MB

import cv2
img = cv2.imread("img.jpg", 1)
cv2.imwrite('imgTest3.png', img, [cv2.IMWRITE_PNG_COMPRESSION, 50])

True

圖像大小變?yōu)?.34MB

由此可知,jpg圖片文件圖像質(zhì)量的數(shù)值越低,壓縮比越高,png圖片文件圖像質(zhì)量的數(shù)值越低,壓縮比越低

3.像素

像素:是指組成圖像的小方格

RGB: 每一種顏色都是由RGB(red, green, blue)三種顏色組合而成的

顏色深度:比如,8bit 表示每種顏色的范圍是0~255, 所以總共有256^3中顏色

圖像寬高:表示在水平方向和豎直方向的像素點(diǎn)的個(gè)數(shù)

未壓縮圖片的計(jì)算方法: w * h * 顏色通道(3) * 8 bit / 8(B)

3.1像素讀取與寫入

每一個(gè)像素點(diǎn)都有3各部分組成,一般情況下,圖片存儲的格式為RGB, 但是opecv讀取的圖片為BGR格式

我們將圖片的左上角的一列變?yōu)樗{(lán)色

import cv2
img = cv2.imread('img.jpg', 1)
(b, g, r) = img[100, 100] # 讀取像素值
print(b, g, r)
#10,100 --- 110, 100
for i in range(1, 1000):
  img[10 + i][100] = (255, 0, 0)
cv2.imshow('imageBlue.png', img)
cv2.waitKey(0)

59 54 129

True

OpenCV實(shí)現(xiàn)讀取與寫入圖片的方法

上述就是小編為大家分享的OpenCV實(shí)現(xiàn)讀取與寫入圖片的方法了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI