圖像的IO操作,讀取和保存方法
1.1 API
cv.imread()
參數(shù):
要讀取的圖像
讀取圖像的方式:
cv.IMREAD*COLOR:以彩色模式加載圖像,任何圖像的圖像的透明度都將被忽略。這是默認(rèn)參數(shù) 標(biāo)志: 1
cv.IMREAD*GRAYSCALE :以灰度模式加載圖像 標(biāo)志: 0
cv.IMREAD_UNCHANGED :包括alpha通道(透明通道)的加載圖像模式。 標(biāo)志: -1
可以使用1、0或者-1來替代上面三個標(biāo)志
1.2顯示圖像
cv.imshow()
參數(shù):
- 顯示圖像窗口名稱,以字符串類型表示
- 要加載的圖像
注意:在調(diào)用圖像API后,要調(diào)用cv.waitKey()給圖像繪制留下時間,否則窗口會出現(xiàn)無響應(yīng)的情況,并且圖像無法顯示出來
另外我們也可以使用matplotlib對圖像進(jìn)行展示
- 如果讀取的是彩色圖像(三個通道·)
'''
讀取圖像的方式:
**cv.IMREAD*COLOR**:以彩色模式加載圖像,任何圖像的圖像的透明度都將被忽略。這是默認(rèn)參數(shù) 標(biāo)志: 1
**cv.IMREAD*GRAYSCALE** :以灰度模式加載圖像 標(biāo)志: 0
**cv.IMREAD_UNCHANGED** :包括alpha通道(透明度通道)的加載圖像模式。 標(biāo)志: -1
可以使用**1、0或者-1**來替代上面三個標(biāo)志
'''
import cv2
import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt
#以灰度圖的形式讀取圖像
img = cv.imread('lena.png')
cv.imshow('image1',img)
cv2.waitKey(0)
#在matplotlib中顯示
plt.imshow(img[:,:,::-1]) #圖像按BGR順序存儲,顯示的時候順序是RGB通道,所以需要翻轉(zhuǎn)成RGB
plt.show()
- 如果讀取的是灰度圖(一個通道)
plt.imshow(img,cmap='gray') #使用灰度色彩映射顯示灰度圖像
plt.show() #顯示圖像
1.3保存圖像
cv.imwrite()
參數(shù):
- 文件名,要保存在哪里(注意:要具體到文件名)
- 要保存的圖像
#保存圖像
cv.imwrite(r"E:\All_in\opencv\lena_saved.png",img)
注意事項(xiàng):
OpenCV是一個強(qiáng)大的圖像處理庫,可以實(shí)現(xiàn)各種圖像處理和計(jì)算機(jī)視覺任務(wù)。在使用OpenCV進(jìn)行IO操作(如讀取、顯示、保存)時需要注意以下幾點(diǎn):
圖像格式與通道數(shù)
在進(jìn)行圖像IO操作時,需要了解輸入/輸出的圖像格式和通道數(shù)。一般情況下,OpenCV支持常見的圖像格式(如灰度圖、BGR圖、RGBA圖等)和通道數(shù)(如單通道、三通道、四通道等)。不同的圖像格式和通道數(shù)對應(yīng)著不同的讀取、顯示和保存方式,需要根據(jù)實(shí)際情況選擇相應(yīng)的IO函數(shù)。
文件路徑和命名規(guī)則
在進(jìn)行圖像IO操作時,需要指定文件路徑和命名規(guī)則。文件路徑用于指定圖像文件的存儲位置,可以是相對路徑或絕對路徑;命名規(guī)則用于指定圖像文件的名稱和后綴,常見的包括jpg、png、bmp等。需要注意的是,在指定文件路徑和命名規(guī)則時應(yīng)確保合法性,例如避免使用特殊字符和中文命名等問題。
顯示窗口和事件處理
在使用OpenCV進(jìn)行圖像顯示時,需要創(chuàng)建一個窗口用于顯示圖像。窗口的創(chuàng)建和命名可以通過特定函數(shù)實(shí)現(xiàn),同時還需要設(shè)定窗口的大小和位置。另外,在窗口顯示圖像時需要考慮事件的處理,例如鼠標(biāo)點(diǎn)擊、鍵盤按鍵等,需要通過回調(diào)函數(shù)對事件進(jìn)行響應(yīng)。
圖像壓縮和質(zhì)量控制
在進(jìn)行圖像保存時,需要考慮圖像壓縮和質(zhì)量控制等因素。OpenCV支持多種圖像壓縮格式,可以通過參數(shù)傳遞來指定壓縮格式和壓縮比率。同時還可以通過設(shè)定圖像質(zhì)量參數(shù)來控制保存圖像的質(zhì)量和精度。
內(nèi)存管理和異常處理
在進(jìn)行IO操作時還需要考慮內(nèi)存管理和異常處理。在讀取、顯示和保存圖像時,可能會涉及到大量的內(nèi)存分配和釋放,需要注意防止內(nèi)存泄漏等問題。另外,在進(jìn)行IO操作時,也需要注意異常情況的處理,例如文件不存在、讀取錯誤等問題,需要通過異常處理機(jī)制進(jìn)行處理。文章來源:http://www.zghlxwxcb.cn/news/detail-693414.html
綜上所述,OpenCV是一個強(qiáng)大的圖像處理庫,可以實(shí)現(xiàn)各種圖像處理和計(jì)算機(jī)視覺任務(wù)。在進(jìn)行IO操作時,需要注意圖像格式與通道數(shù)、文件路徑和命名規(guī)則、顯示窗口和事件處理、圖像壓縮和質(zhì)量控制、內(nèi)存管理和異常處理等問題。遵循這些注意事項(xiàng),可以更好地使用OpenCV進(jìn)行圖像IO操作,并實(shí)現(xiàn)各種圖像處理任務(wù)。文章來源地址http://www.zghlxwxcb.cn/news/detail-693414.html
到了這里,關(guān)于OpenCV基本操(IO操作,讀取、顯示、保存)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!