網站首頁 編程語言 正文
使用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
相關推薦
- 2023-09-12 django數據庫篩選功能
- 2022-05-22 python中的sys模塊和os模塊_python
- 2022-04-07 C++11生成隨機數(random庫)的使用_C 語言
- 2022-03-08 android整數二分模板徹底解決邊界問題_Android
- 2022-06-16 Kotlin對象比較注意點示例詳解_Android
- 2022-08-28 Go通道channel通過通信共享內存_Golang
- 2024-03-22 springboot報錯Error creating bean with name ‘dataSou
- 2022-12-08 C#調用C++?DLL?bool返回值始終為true的問題_C#教程
- 最近更新
-
- 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同步修改后的遠程分支