網站首頁 編程語言 正文
前言
OpenCV是圖像處理常用的庫,作為初學者,往往從圖片的讀取、保存、查詢圖片的信息開始,下面將分享Python下OpenCV的一些基本使用方法,掌握這些基本方法后,能夠更好地與matplotlib、numpy等結合使用,完成相應的圖像操作。
教程
1、讀取/保存圖片
1)imread和imwrite方法
注:此方法遇到中文路徑會報錯!
import cv2
# 參數1:文件路徑
# 參數2:讀取方式
# 常用幾種模式:
# 灰度圖:cv2.IMREAD_GRAYSCALE
# BGR三通道彩色圖:cv2.IMREAD_COLOR
# 原始通道(自動判斷:單通道/三通道/四通道等):cv2.IMREAD_UNCHANGED
img = cv2.imread('圖像文件路徑(全英文)', cv2.IMREAD_COLOR)
# 參數1:文件路徑
# 參數2:待保存的圖像(BGR格式的uint8 ndarray類型)
# 參數3【可選】:壓縮模式以及質量等
# 常用幾種模式:
# 灰度圖:cv2.IMREAD_GRAYSCALE
# BGR三通道彩色圖:cv2.IMREAD_COLOR
# 原始通道(自動判斷:單通道/三通道/四通道等):cv2.IMREAD_UNCHANGED
img_saved = cv2.imwrite('圖像輸出路徑(含圖像名)', img)
2)imdecode和imencode方法
import cv2
import numpy as np
# cv2.imdecode():從指定的內存緩存中讀取數據,并把數據轉換成圖像格式
src_img_path = './image.png'
img=cv2.imdecode(np.fromfile(src_img_path, dtype=np.uint8),cv2.IMREAD_UNCHANGED)
# cv2.imencode():將圖片格式轉換成流數據,寫入內存緩存中,可以再調用.tofile()寫入到磁盤中
out_img_path = './image.jpg'
extension = '.jpg'
cv2.imencode(extension,img)[1].tofile(out_img_path)
2、編碼轉換
1)BGR轉RGB
matplotlib.pyplot的imshow()方法廣泛用于顯示圖像,然而opencv默認加載的圖像時BGR格式,直接顯示會出現顏色異常,需要先進行轉換
img_rgb = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
2)BGR轉GRAY
三通道的BRG彩色圖像轉換成單通道的灰度圖
img_gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
3、快速判斷圖像是否單通道灰度圖
if img.ndim == 2:
print('圖像是單通道灰度圖')
else:
print('圖像包含多個通道')
4、獲取圖像通道數
def get_n_channel(img):
if img.ndim == 2:
print('通道數:1')
return 1
else:
print('圖像包含多個通道')
return img.shape[2]
原文鏈接:https://juejin.cn/post/7082938938104479751
相關推薦
- 2022-09-09 Go語言中DateTime的用法介紹_Golang
- 2023-12-10 啟動微服務,提示驅動程序無法通過使用安全套接字層(SSL)加密與 SQL Server 建立安全連接
- 2022-08-01 grpool?goroutine池協程管理_Golang
- 2022-05-12 Nginx反向代理 對響應網頁中的字符串進行替換設置
- 2022-05-08 記一個React.memo引起的bug_React
- 2022-07-13 關于自定義監聽器 onApplicationEvent方法被執行多次的問題
- 2022-11-12 Python創建SQL數據庫流程逐步講解_python
- 2023-12-17 SpringSecurity 用戶帳號已被鎖定
- 最近更新
-
- 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同步修改后的遠程分支