網站首頁 編程語言 正文
使用cv2.imread(),cv2.imshow(),cv2.imwrite()讀取、顯示和保存圖像
一、讀入圖像
使用函數cv2.imread(filepath,flags)讀入一副圖片
-
filepath
:要讀入圖片的完整路徑 -
flags
:讀入圖片的標志 -
cv2.IMREAD_COLOR
:默認參數,讀入一副彩色圖片,忽略alpha通道 -
cv2.IMREAD_GRAYSCALE
:讀入灰度圖片 -
cv2.IMREAD_UNCHANGED
:顧名思義,讀入完整圖片,包括alpha通道
import numpy as np import cv2 img = cv2.imread('1.jpg',cv2.IMREAD_GRAYSCALE)
二、顯示圖像
使用函數cv2.imshow(wname,img)顯示圖像,第一個參數是顯示圖像的窗口的名字,第二個參數是要顯示的圖像(imread讀入的圖像),窗口大小自動調整為圖片大小
cv2.imshow('image',img) cv2.waitKey(0) cv2.destroyAllWindows() #dv2.destroyWindow(wname)
cv2.waitKey顧名思義等待鍵盤輸入,單位為毫秒,即等待指定的毫秒數看是否有鍵盤輸入,若在等待時間內按下任意鍵則返回按鍵的ASCII碼,程序繼續運行。
若沒有按下任何鍵,超時后返回-1。參數為0表示無限等待。
不調用waitKey的話,窗口會一閃而逝,看不到顯示的圖片。
-
cv2.destroyAllWindow()
銷毀所有窗口 -
cv2.destroyWindow(wname)
銷毀指定窗口
三、保存圖像
使用函數cv2.imwrite(file,img,num)保存一個圖像。
第一個參數是要保存的文件名,第二個參數是要保存的圖像。
可選的第三個參數,它針對特定的格式:對于JPEG,其表示的是圖像的質量,用0 - 100的整數表示,默認95;對于png ,第三個參數表示的是壓縮級別。默認為3.
注意:
-
cv2.IMWRITE_JPEG_QUALITY
類型為 long ,必須轉換成 int -
cv2.IMWRITE_PNG_COMPRESSION
, 從0到9 壓縮級別越高圖像越小。
cv2.imwrite('1.png',img, [int( cv2.IMWRITE_JPEG_QUALITY), 95]) cv2.imwrite('1.png',img, [int(cv2.IMWRITE_PNG_COMPRESSION), 9])
四、圖片操作
1、使用函數cv2.flip(img,flipcode)翻轉圖像,flipcode控制翻轉效果。
-
flipcode = 0
:沿x軸翻轉 -
flipcode > 0
:沿y軸翻轉 -
flipcode < 0
:x,y軸同時翻轉
imgflip = cv2.flip(img,1)
2、復制圖像
imgcopy = img.copy()
3、顏色空間轉換
#彩色圖像轉為灰度圖像 img2 = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)? #灰度圖像轉為彩色圖像 img3 = cv2.cvtColor(img,cv2.COLOR_GRAY2RGB) # cv2.COLOR_X2Y,其中X,Y = RGB, BGR, GRAY, HSV, YCrCb, XYZ, Lab, Luv, HLS
示例
讀入一副圖像,按’s’鍵保存后退出,其它任意鍵則直接退出不保存
import numpy as np import cv2 img = cv2.imread('1.jpg',cv2.IMREAD_UNCHANGED) cv2.imshow('image',img) k = cv2.waitKey(0) if k == ord('s'): # wait for 's' key to save and exit ? ? cv2.imwrite('1.png',img) ? ? cv2.destroyAllWindows() else:? ? ? cv2.destroyAllWindows()
總結
原文鏈接:https://blog.csdn.net/djcxym/article/details/52097812
相關推薦
- 2022-12-11 C語言中求解圖形的問題_C 語言
- 2022-04-20 C語言進階棧幀示例詳解教程_C 語言
- 2022-07-14 C語言深入探索之單鏈表與typedef的用法_C 語言
- 2022-04-08 從頭學習C語言之switch語句和分支嵌套_C 語言
- 2022-10-30 go語言reflect.Type?和?reflect.Value?應用示例詳解_Golang
- 2022-07-26 當本地ping通虛擬機,虛擬機ping不通本地時。
- 2022-07-12 Linux中xargs命令的用法
- 2022-03-28 Python垃圾回收及Linux?Fork_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支