網站首頁 編程語言 正文
前言
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-04-30 C語言鏈表實現銷售管理系統_C 語言
- 2022-10-06 Android開發Jetpack組件Room使用講解_Android
- 2022-01-16 jQuery實現動畫效果和導航欄動態顯示
- 2022-11-18 C++簡單實現shared_ptr的代碼_C 語言
- 2022-03-15 命令行工具,VO和命令行之間的轉化工具
- 2023-06-04 Pandas通過index選擇并獲取行和列_python
- 2022-05-04 C語言中getchar()的原理以及易錯點解析_C 語言
- 2023-01-13 Pytorch中的modle.train,model.eval,with?torch.no_grad
- 最近更新
-
- 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同步修改后的遠程分支