OpenCV讀取與寫入圖片的實現(xiàn)
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)
2.圖片寫入
讀取圖片要經(jīng)歷四個步驟:
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圖像質量
1.jpg
圖片文件是以圖片質量為代價進行壓縮的,屬于有損壓縮
cv2.IMWRITE_JPEG_QUALITY:
表示當前的圖片質量,壓縮范圍為0-100,不同壓縮比對應不同的圖片大小,下面我們來體驗一下:
import cv2 img = cv2.imread("img.jpg", 1) cv2.imwrite('imgTest.jpg', img, [cv2.IMWRITE_JPEG_QUALITY, 0])
True
原圖像如下:
圖片大小為400kb
壓縮之后的圖片為:
圖片大小為40kb, 同時出現(xiàn)了嚴重的馬賽克現(xiàn)象
import cv2 img = cv2.imread("img.jpg", 1) cv2.imwrite('imgTest2.jpg', img, [cv2.IMWRITE_JPEG_QUALITY, 50])
True
壓縮之后的圖片為:
圖片大小為200kb,馬賽克現(xiàn)象沒那么的嚴重
2.png
圖片格式的壓縮屬于無損壓縮,可以設置透明度
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
壓縮之后的圖像為:
圖片大小為: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
圖片文件圖像質量的數(shù)值越低,壓縮比越高,png
圖片文件圖像質量的數(shù)值越低,壓縮比越低
3.像素
像素
:是指組成圖像的小方格
RGB
: 每一種顏色都是由RGB(red, green, blue)三種顏色組合而成的
顏色深度
:比如,8bit 表示每種顏色的范圍是0~255, 所以總共有256^3中顏色
圖像寬高
:表示在水平方向和豎直方向的像素點的個數(shù)
未壓縮圖片的計算方法: w * h * 顏色通道(3) * 8 bit / 8(B)
3.1像素讀取與寫入
每一個像素點都有3各部分組成,一般情況下,圖片存儲的格式為RGB, 但是opecv讀取的圖片為BGR格式
我們將圖片的左上角的一列變?yōu)樗{色
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讀取與寫入圖片的實現(xiàn)的文章就介紹到這了,更多相關OpenCV讀取與寫入圖片內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python實現(xiàn)數(shù)字小寫轉大寫的示例詳解
這篇文章主要為大家詳細介紹了如何利用Python實現(xiàn)數(shù)字小寫轉大寫的功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下2022-12-12python讀取并定位excel數(shù)據(jù)坐標系詳解
這篇文章主要介紹了python讀取并定位excel數(shù)據(jù)坐標系詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-06-06python爬蟲之你好,李煥英電影票房數(shù)據(jù)分析
這篇文章主要介紹了python爬蟲之你好,李煥英電影票房數(shù)據(jù)分析,文中有非常詳細的代碼示例,對正在學習python爬蟲的小伙伴們有一定的幫助,需要的朋友可以參考下2021-04-04解讀opencv中cv2.imread()返回值為None問題及解決
這篇文章主要介紹了解讀opencv中cv2.imread()返回值為None問題及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-11-11解決遇到PermissionError:[Errno 13] Permission den
遇到"PermissionError:[Errno 13] Permission denied"通常是權限不足導致,解決此問題的方法包括檢查并更改文件權限,使用管理員權限運行命令,或接觸文件所有者,這些步驟有助于確保用戶具有執(zhí)行操作所需的權限,有時,文件或目錄可能被鎖定2024-09-09