目錄
cv2.waitKey()
窗口創(chuàng)建:cv2.namedWindow()
窗口大小調(diào)整:cv2.resizeWindow()
窗口顯示:cv2.imshow()
關(guān)閉窗口:cv2.destroyAllWindows()
圖片讀?。篶v2.imread()
圖片保存:cv2.imwrite()
代碼示例
cv2.waitKey()
int waitKey(int delay=0)
waitKey()的基本邏輯:他會(huì)在一定時(shí)間內(nèi)等待接收鍵盤的一個(gè)值;返回值為鍵盤按鍵的ASCII值;delay表示等待時(shí)間(ms)。
若delay<=0,則表示程序會(huì)無(wú)限制的等待用戶的按鍵事件。
若等待期間沒(méi)有按鍵輸入,則返回 -1 。
常見(jiàn):cv2.waitKey(1000) & 0xFF == ord(‘q’)?
解釋:ord('q')
?:返回q的ascii碼,waitKey返回值的范圍為(0-255),通過(guò)??cv2.waitKey(1) & 0xFF?
可以將值限定在(0-255)避免程序出現(xiàn)奇怪的BUG。
常用案例:
key = cv2.waitKey(0)
if key & 0xFF == ord('q'):
exit()
窗口創(chuàng)建:cv2.namedWindow()
void nameWindow(const string& winname,int flags = WINDOW_AUTOSIZE)
winname:窗口名字;flags:窗口標(biāo)識(shí),默認(rèn)為WINDOW_AUTOSIZE。
flags |
作用 |
WINDOW_NORMAL | 顯示圖像后,允許用戶隨意調(diào)整窗口大小 |
WINDOW_AUTOSIZE | 根據(jù)圖像大小顯示窗口,不允許用戶調(diào)整大小 |
WINDOW_FREERATIO | 窗口大小自適應(yīng)比例 |
WINDOW_KEEPRATIO | 保持圖像的比例 |
窗口大小調(diào)整:cv2.resizeWindow()
用法:cv2.resizeWindow(window_name, width, height)
不返回任何值;
- window_name:?將顯示圖像/視頻的窗口的名稱
- width:? ? ? ? ? ? ? ??新窗口寬度(整數(shù)類型)
- height:? ? ? ? ? ? ? ?新窗口高度(整數(shù)類型)
窗口顯示:cv2.imshow()
cv2.imshow(winname, img)
winname:一個(gè)字符串,代表要在其中顯示圖像的窗口的名稱。
img:它是要顯示的圖像。
它不返回任何值。顯示時(shí)會(huì)將像數(shù)值范圍映射至 [0,255] 。
關(guān)閉窗口:cv2.destroyAllWindows()
????????You can call destroyWindow() or destroyAllWindows() to close the window and de-allocate any associated memory usage. For a simple program, you do not really have to call these functions because all the resources and windows of the application are closed automatically by the operating system upon exit.
????????
????????您可以調(diào)用destroyWindow()或destroyAllWindows()來(lái)關(guān)閉窗口并取消分配任何相關(guān)的內(nèi)存使用。對(duì)于一個(gè)簡(jiǎn)單的程序,實(shí)際上不必調(diào)用這些函數(shù),因?yàn)橥顺鰰r(shí)操作系統(tǒng)會(huì)自動(dòng)關(guān)閉應(yīng)用程序的所有資源和窗口
void destroyWindow(const string& winname);
winname:需要關(guān)閉的窗口的名稱
圖片讀取:cv2.imread()
imread(const string& filename, int flags = IMREAD_COLOR)
返回值:mat格式,返回讀取的圖片。
參數(shù)1 filename:讀取的圖片文件名,可以使用相對(duì)路徑或者絕對(duì)路徑,但必須帶完整的文件擴(kuò)展名(圖片格式后綴)。
參數(shù)2 flags:一個(gè)讀取標(biāo)記,用于選擇讀取圖片的方式,默認(rèn)值為IMREAD_COLOR,flag值的設(shè)定與用什么顏色格式讀取圖片有關(guān)。
flags | 說(shuō)明 |
---|---|
IMREAD_UNCHANGED | 如果設(shè)置,則按原樣返回加載的圖像(使用Alpha通道,否則會(huì)被裁剪) |
IMREAD_GRAYSCALE | 如果設(shè)置,則始終將圖像轉(zhuǎn)換為單通道灰度圖像(編解碼器內(nèi)部轉(zhuǎn)換)。 |
IMREAD_COLOR | 如果設(shè)置,請(qǐng)始終將圖像轉(zhuǎn)換為3通道BGR彩色圖像。 |
IMREAD_ANYDEPTH | 如果設(shè)置,則在輸入具有相應(yīng)深度時(shí)返回16位/ 32位圖像,否則將其轉(zhuǎn)換為8位。 |
IMREAD_ANYCOLOR | 如果設(shè)置,則以任何可能的顏色格式讀取圖像。 |
IMREAD_LOAD_GDAL | 如果設(shè)置,使用gdal驅(qū)動(dòng)程序加載圖像 |
IMREAD_REDUCED_GRAYSCALE_2 | 如果設(shè)置,則始終將圖像轉(zhuǎn)換為單通道灰度圖像,圖像尺寸減小1/2。 |
IMREAD_REDUCED_COLOR_2 | 如果設(shè)置,則始終將圖像轉(zhuǎn)換為3通道BGR彩色圖像,圖像尺寸減小1/2。 |
IMREAD_REDUCED_GRAYSCALE_4 | 如果設(shè)置,則始終將圖像轉(zhuǎn)換為單通道灰度圖像,圖像尺寸減小1/4 |
IMREAD_REDUCED_COLOR_4 | 如果設(shè)置,則始終將圖像轉(zhuǎn)換為3通道BGR彩色圖像,圖像尺寸減小1/4 |
IMREAD_REDUCED_GRAYSCALE_8 | 如果設(shè)置,則始終將圖像轉(zhuǎn)換為單通道灰度圖像,圖像尺寸減小1/8。 |
IMREAD_REDUCED_COLOR_8 | 如果設(shè)置,則始終將圖像轉(zhuǎn)換為3通道BGR彩色圖像,圖像尺寸減小1/8。 |
IMRED_IGNORE_ORIENTATION | 如果設(shè)置,請(qǐng)不要根據(jù)EXIF的方向標(biāo)志旋轉(zhuǎn)圖像。 |
圖片保存:cv2.imwrite()
cv2.imwrite(filename,img,params)
filename:圖片保存的地址,包括圖片文件名及后綴。
img:要保存的圖像數(shù)組。
imwrite函數(shù)是基于文件擴(kuò)展名選擇圖像的格式。通常,使用此功能只能保存8位單通道或3通道(帶有BGR通道順序)圖像,但有以下例外:
?對(duì)于PNG,JPEG2000和TIFF格式,可以保存16位無(wú)符號(hào)(CV_16U)圖像。
?32位浮點(diǎn)(CV_32F)圖像可以保存為PFM,TIFF,OpenEXR和Radiance HDR格式; 使用LogLuv高動(dòng)態(tài)范圍編碼(每像素4個(gè)字節(jié))保存3通道(CV_32FC3)TIFF圖像。
?可以使用此功能保存帶有Alpha通道的PNG圖像。為此,創(chuàng)建8位(或16位)4通道圖像BGRA,其中alpha通道最后。完全透明的像素應(yīng)該將alpha設(shè)置為0,完全不透明的像素應(yīng)該將alpha設(shè)置為255/65535。如果格式,深度或通道順序不同,請(qǐng)?jiān)诒4嬷笆褂肕at :: convertTo和cv :: cvtColor進(jìn)行轉(zhuǎn)換。或者,使用通用FileStorage I / O函數(shù)將圖像保存為XML或YAML格式。
params:以特定格式保存圖片。
cv2.CV_IMWRITE_JPEG_QUALITY:設(shè)置 .jpeg/.jpg 格式的圖片質(zhì)量,取值為 0-100(默認(rèn)值 95),數(shù)值越大則圖片質(zhì)量越高;
cv2.CV_IMWRITE_WEBP_QUALITY:設(shè)置 .webp 格式的圖片質(zhì)量,取值為 0-100;
cv2.CV_IMWRITE_PNG_COMPRESSION:設(shè)置 .png 格式圖片的壓縮比,取值為 0-9(默認(rèn)值 3),數(shù)值越大則壓縮比越大。
返回值:保存成功返回 True,否則返回 False。
代碼示例
import cv2
# 讀取圖片 211*400
img = cv2.imread('D:\Tom.jpg', flags = cv2.IMREAD_COLOR)
# 創(chuàng)建窗口,命名為Demo
cv2.namedWindow('Demo', cv2.WINDOW_NORMAL)
# 調(diào)整窗口大小w
cv2.resizeWindow('Demo', 422, 800)
while 1:
# 在窗口內(nèi)顯示圖片
cv2.imshow('Demo', img)
# 等待按鍵結(jié)束窗口
key = cv2.waitKey(0)
# 按 q 退出程序
if key & 0xFF == ord('q'):
break
# 按 s 保存圖片
elif key & 0xFF == ord('s'):
cv2.imwrite('D:\Demo.jpg', img)
#關(guān)閉所有窗口,釋放資源
cv2.destroyAllWindows()
參考:
cv2.waitKey()_長(zhǎng) 青的博客-CSDN博客
cv2.waitKey的入門級(jí)理解_山上有強(qiáng)強(qiáng)的博客-CSDN博客
python cv2.waitKey()函數(shù)_漫天丶飛雪的博客-CSDN博客
3-2 如何通過(guò)OpenCV創(chuàng)建顯示窗口_嗶哩嗶哩_bilibili
opencv中namedWindow( )函數(shù)用法總結(jié)(02)tu_洛克家族的博客-CSDN博客
OpenCV中namedWindow()函數(shù)使用_opencv銝要amedwindow_鄭德帥的博客-CSDN博客
【OpenCV 例程300篇】03. 圖像的顯示(cv2.imshow)_youcans_的博客-CSDN博客
OpenCV中的destroyallWindows的作用_hanjie-chen的博客-CSDN博客
Python OpenCV resizeWindow()用法及代碼示例 - 純凈天空
https://www.cnblogs.com/mangoroom/archive/2019/06/10/10999151.html
cv.imread()函數(shù)_幼稚園的扛把子~的博客-CSDN博客
【OpenCV 例程300篇】02. 圖像的保存(cv2.imwrite)_youcans_的博客-CSDN博客文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-803488.html
python-opencv第二期:imwrite函數(shù)詳解_cv2.imwrite_Kamen Black君的博客-CSDN博客文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-803488.html
到了這里,關(guān)于OpenCV:創(chuàng)建窗口,圖片顯示和保存的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!