最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python中OpenCV與Matplotlib的圖像操作入門指南

 更新時間:2025年06月01日 16:29:08   作者:小米玄戒Andrew  
這篇文章主要介紹了Python中OpenCV與Matplotlib的圖像操作指南,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧

在這里插入圖片描述

一、環(huán)境準備

import cv2
import numpy as np
import matplotlib.pyplot as plt
# 配置中文字體顯示(可選)
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

二、圖像的基本操作

1. 圖像讀取、顯示與保存 使用OpenCV操作

# 讀取圖像(支持多種格式)
img = cv2.imread('example.jpg')
print(f"圖像尺寸: {img.shape}")  # 輸出:(高度, 寬度, 通道數(shù))
# 顯示圖像
cv2.imshow('OpenCV Window', img)
cv2.waitKey(0)  # 等待按鍵
cv2.destroyAllWindows()
# 保存圖像
cv2.imwrite('output.jpg', img)  # 自動保存為JPG格式

使用Matplotlib操作

# 讀取并顯示圖像
plt.figure(figsize=(10,5))
img_plt = plt.imread('example.png')  # 自動歸一化到[0,1]
plt.subplot(121)
plt.imshow(img_plt)
plt.title('Matplotlib顯示')
# OpenCV與Matplotlib顏色空間差異
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)  # BGR轉(zhuǎn)RGB
plt.subplot(122)
plt.imshow(img_rgb)
plt.title('OpenCV轉(zhuǎn)RGB顯示')
plt.show()

?? 注意事項:

OpenCV讀取的像素值范圍是[0,255],Matplotlib自動歸一化到[0,1]路徑含中文時需使用cv2.imdecode特殊處理保存質(zhì)量可通過參數(shù)控制(如cv2.imwrite('out.jpg', img, [int(cv2.IMWRITE_JPEG_QUALITY), 90])

2. 像素級操作

單個像素訪問與修改

# 訪問特定位置像素值
px = img[100, 50]  # 獲取坐標(50,100)處像素值
print(f"Blue={px[0]}, Green={px[1]}, Red={px[2]}")
# 修改像素值
img[100, 50] = [0, 255, 0]  # 將該位置改為綠色

區(qū)域像素操作

# 提取ROI區(qū)域(感興趣區(qū)域)
roi = img[50:150, 100:200]
# 批量修改像素值
img[200:300, 300:400] = [0, 0, 255]  # 填充紅色矩形

像素值統(tǒng)計分析

print(f"最大像素值: {img.max()}")
print(f"最小像素值: {img.min()}")
print(f"平均像素值: {img.mean()}")

3. 通道操作

通道分離與合并

# 分離通道(OpenCV方式)
b, g, r = cv2.split(img)
cv2.imshow('Blue Channel', b)
# 合并通道
merged = cv2.merge([b, g, r])
# 直接操作特定通道(Numpy方式)
img_copy = img.copy()
img_copy[:, :, 0] = 0  # 清空藍色通道

多光譜分析示例

# 顯示各通道灰度圖
plt.figure(figsize=(12, 3))
for i, ch in enumerate(['Blue', 'Green', 'Red']):
    plt.subplot(1,3,i+1)
    plt.imshow(cv2.split(img)[i], cmap='gray')
    plt.title(f'{ch}通道')
    plt.axis('off')
plt.show()

三、完整實踐案例

def image_processing_pipeline(path):
    # 1. 圖像讀取
    src = cv2.imread(path)
    if src is None:
        print("錯誤:無法讀取圖像!")
        return
    # 2. 通道分析
    b, g, r = cv2.split(src)
    # 3. 創(chuàng)建特殊效果
    special_effect = src.copy()
    special_effect[:, :, 1] = cv2.add(special_effect[:, :, 1], 50)  # 增強綠色通道
    # 4. 結(jié)果展示
    plt.figure(figsize=(15, 5))
    plt.subplot(141)
    plt.imshow(cv2.cvtColor(src, cv2.COLOR_BGR2RGB))
    plt.title('原圖')
    plt.subplot(142)
    plt.imshow(r, cmap='gray')
    plt.title('紅色通道')
    plt.subplot(143)
    plt.imshow(special_effect[:, :, [2,1,0]])
    plt.title('增強綠色通道')
    plt.subplot(144)
    plt.imshow(b, cmap='viridis')  # 使用不同色圖
    plt.title('藍色通道(Viridis色圖)')
    plt.tight_layout()
    plt.show()
# 執(zhí)行處理流程
image_processing_pipeline('test_image.jpg')

四、性能優(yōu)化技巧

向量化操作替代循環(huán)

# 推薦方式(Numpy向量化)
start_time = cv2.getTickCount()
brighter = cv2.add(img, np.array([30]))
print(f"耗時:{(cv2.getTickCount() - start_time)/cv2.getTickFrequency():.4f}s")
# 不推薦方式(雙重循環(huán))
start_time = cv2.getTickCount()
for y in range(img.shape[0]):
    for x in range(img.shape[1]):
        img[y,x] = np.clip(img[y,x] + 30, 0, 255)
print(f"耗時:{(cv2.getTickCount() - start_time)/cv2.getTickFrequency():.4f}s")

內(nèi)存連續(xù)性優(yōu)化

# 檢查數(shù)組內(nèi)存布局
if not img.flags.c_contiguous:
    img = np.ascontiguousarray(img)

五、常見問題解決方案

圖像無法顯示

  • 檢查路徑是否包含中文/特殊字符
  • 確認圖像尺寸是否超過屏幕分辨率
  • 嘗試使用cv2.resizeWindow()調(diào)整窗口大小

顏色顯示異常

# 統(tǒng)一顏色空間轉(zhuǎn)換
def show_image統(tǒng)一(img_bgr, title='Image'):
    plt.imshow(cv2.cvtColor(img_bgr, cv2.COLOR_BGR2RGB))
    plt.title(title)
    plt.axis('off')
    plt.show()

大圖像處理

# 金字塔下采樣
pyramid = cv2.pyrDown(img)
print(f"下采樣后尺寸:{pyramid.shape}")

六、擴展學習方向

進階操作

  • 使用cv2.LUT()實現(xiàn)色彩查找表變換
  • 掩膜操作(mask)進行區(qū)域處理
  • 利用Numpy數(shù)組的布爾索引進行條件修改

性能提升

  • 使用OpenCV內(nèi)置函數(shù)替代Python循環(huán)
  • 多線程處理圖像塊
  • CUDA加速(需安裝opencv-contrib-python包)

實際應用

  • 圖像增強:直方圖均衡化、CLAHE算法
  • 顏色空間轉(zhuǎn)換:HSV/YUV等
  • 形態(tài)學操作:腐蝕、膨脹

通過掌握這些基礎操作,您將為后續(xù)的圖像處理學習打下堅實基礎。建議通過實際項目(如證件照背景替換、圖像特效制作)加深理解。

下一篇我們將進入圖像的「幾何變換世界」,學習如何用數(shù)學矩陣實現(xiàn)圖像的平移、旋轉(zhuǎn)、縮放,以及不同插值算法對圖像質(zhì)量的影響?,F(xiàn)在請打開你的圖像,嘗試裁剪一個有趣的ROI區(qū)域并修改它的顏色吧!

思考:為什么對大尺寸圖像使用cv2.split()會更耗內(nèi)存?如何用NumPy實現(xiàn)更高效的通道分離?

到此這篇關(guān)于Python中OpenCV與Matplotlib的圖像操作指南的文章就介紹到這了,更多相關(guān)Python OpenCV與Matplotlib圖像內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python操作SQLite/MySQL/LMDB數(shù)據(jù)庫的方法

    Python操作SQLite/MySQL/LMDB數(shù)據(jù)庫的方法

    這篇文章主要介紹了Python操作SQLite/MySQL/LMDB數(shù)據(jù)庫的方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-11-11
  • python圖像填充與裁剪/resize的實現(xiàn)代碼

    python圖像填充與裁剪/resize的實現(xiàn)代碼

    這篇文章主要介紹了python圖像填充與裁剪/resize,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-08-08
  • 10個殺手級應用的Python自動化腳本

    10個殺手級應用的Python自動化腳本

    重復的任務總是耗費時間和枯燥的。如果逐一裁剪100張照片,或者做諸如Fetching APIs、糾正拼寫和語法等任務,所有這些都需要大量的時間。為什么不把它們自動化呢?本文詳細介紹了10個Python自動化腳本,感興趣的小伙伴可以閱讀一下
    2023-03-03
  • Python如何安裝mysql數(shù)據(jù)庫模塊

    Python如何安裝mysql數(shù)據(jù)庫模塊

    這篇文章主要介紹了Python如何安裝mysql數(shù)據(jù)庫模塊問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • python-docx文件定位讀取過程(嘗試替換)

    python-docx文件定位讀取過程(嘗試替換)

    今天小編就為大家分享一篇python-docx文件定位讀取過程(嘗試替換),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • python產(chǎn)生模擬數(shù)據(jù)faker庫的使用詳解

    python產(chǎn)生模擬數(shù)據(jù)faker庫的使用詳解

    這篇文章主要介紹了python產(chǎn)生模擬數(shù)據(jù)faker庫的使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • python雙端隊列原理、實現(xiàn)與使用方法分析

    python雙端隊列原理、實現(xiàn)與使用方法分析

    這篇文章主要介紹了python雙端隊列原理、實現(xiàn)與使用方法,結(jié)合實例形式分析了Python雙端隊列的概念、原理、定義及使用方法,需要的朋友可以參考下
    2019-11-11
  • python單例模式實例解析

    python單例模式實例解析

    這篇文章主要為大家詳細介紹了python單例模式實例的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • python實現(xiàn)視頻分幀效果

    python實現(xiàn)視頻分幀效果

    這篇文章主要為大家詳細介紹了python實現(xiàn)視頻分幀效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • python2與python3共存問題的解決方法

    python2與python3共存問題的解決方法

    這篇文章主要為大家詳細介紹了python2與python3共存問題的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-09-09

最新評論

建阳市| 元谋县| 福鼎市| 灵川县| 公主岭市| 三河市| 松江区| 丽水市| 阿坝县| 华亭县| 四川省| 噶尔县| 福安市| 屏边| 阳原县| 锦州市| 晴隆县| 九龙县| 攀枝花市| 铁岭县| 敦煌市| 铜梁县| 龙山县| 奉节县| 丰顺县| 高要市| 依兰县| 张北县| 博爱县| 会东县| 兴业县| 普陀区| 疏附县| 曲阳县| 色达县| 淮安市| 平武县| 陵水| 九龙城区| 乐安县| 邵阳市|