初探 OpenCV 圖像處理

前言

OpenCV 的全稱是Open Source Computer Vision Library,是一個跨平台的電腦視覺庫。OpenCV是由英特爾公司發起並參與開發,以BSD授權條款授權發行,可以在商業和研究領域中免費使用。OpenCV可用於開發即時的圖像處理電腦視覺以及模式辨識程式。2011年起,OpenCV開始支援GPU即時加速運算。OpenCV 支援多種程式語言,例如 C++、Python、Java 等,並可在 Windows、Linux、OS X、Android 和 iOS 等不同平台上運作。

安裝 OpenCV

%pip3 install opencv-python

實作範例:

1 - 使用 OpenCV 讀取和顯示影像

從文件中讀取圖像並將其顯示在視窗中。

python 复制代码
import cv2

# 從檔案中讀取影像
image = cv2.imread('duck.jpg')

# 開啟一個視窗來顯示影像.第一個參數是視窗標題,第二個參數是要顯示的圖像
cv2.imshow('Original Image', image)

# 按下任意鍵則關閉所有視窗
cv2.waitKey(0)  # cv2.waitKey(0)等待按鍵
# cv2.destroyAllWindows()關閉視窗
cv2.destroyAllWindows()

2 - 使用 OpenCV 裁切影像

裁剪影像可以擷取影像的一部分進行進一步處理或分析.

python 复制代码
import cv2

# 讀取圖片
image = cv2.imread('duck.jpg')

try:
    # 顯示原始圖片
    cv2.imshow('Original Image', image)
except Exception as e:
    print(f"顯示影像時出錯: {e}")

x = 120
y = 100
w = 300
h = 280

# OpenCV 將影象儲存為 NumPy 陣列,透過切片陣列來實現裁剪,取出想要的範圍,另存成新的圖片
# 從 100 到 380 選擇畫素行和從 120 到 420 的列,從而產生 280x300 的裁剪影象
cropped_image = image[y:y+h, x:x+w] # 取出陣列的範圍

# 使用cv2.imshow()函式顯示裁剪後的圖片
cv2.imshow('Cropped Image', cropped_image)

# 按下任意鍵則關閉所有視窗
# cv2.waitKey(0)等待按鍵
cv2.waitKey(0)
# cv2.destroyAllWindows()關閉視窗
cv2.destroyAllWindows()

注意:OpenCV的圖片是以BGR格式儲存的,所以切片的範圍是[y:y+h, x:x+w],而不是[x:x+w, y:y+h]

3 - 使用 OpenCV 調整影像大小

處理影像時,調整影像大小非常重要,尤其是在建立縮圖或調整影像尺寸以進行後續分析時. OpenCV 可讓您透過縮放影像的寬度和高度來調整影像大小.

python 复制代码
import cv2

# 讀取圖片
image = cv2.imread('duck.jpg')
try:
    # 顯示原始圖片
    cv2.imshow('Original Image', image)
except Exception as e:
    print(f"顯示影像時出錯: {e}")

# 使用cv2.resize()函式來調整圖片大小,fx和fy分別是水平和垂直方向的縮放因子,這裡將圖片縮小為原來的一半
resized_image = cv2.resize(image, (0, 0), fx=0.5, fy=0.5)

# 顯示裁剪後的圖片
cv2.imshow('Resized Image', resized_image)

# 按下任意鍵則關閉所有視窗
cv2.waitKey(0)  # cv2.waitKey(0)等待按鍵
# cv2.destroyAllWindows()關閉視窗
cv2.destroyAllWindows()

4 - 使用 OpenCV 調整影像大小

處理完影像後,您可以儲存輸出結果以供將來使用. OpenCV 的 cv2.imwrite() 函數保存映像.

python 复制代码
import cv2

# 讀取圖片
image = cv2.imread('duck.jpg')
resized_image = cv2.resize(image, (0, 0), fx=0.5, fy=0.5)
# 將影像儲存到指定的檔案路徑
cv2.imwrite('resized_image.jpg', resized_image)

print('圖片已成功儲存為 resized_image.jpg')
相关推荐
财经资讯数据_灵砚智能1 小时前
基于全球经济类多源新闻的NLP情感分析与数据可视化(日间)2026年5月10日
人工智能·python·信息可视化·自然语言处理·ai编程
AI科技星1 小时前
第 24 分册:濒死体验与灵魂出窍·数理修行篇(2026 年 5 月 11 日增补版)
人工智能·线性代数·机器学习·量子计算·agi
恋猫de小郭1 小时前
DeepSeek V4 Flash 可以在 128GB 的 M3 Max 运行,还是 1M 上下文
前端·人工智能·ai编程
奔跑的Ma~1 小时前
第三篇:Coze Skill核心模块详解——解锁个性化配置,提升Skill实用性
人工智能·学习·ai编程·skill·扣子
AI医影跨模态组学1 小时前
Sci Bull(IF=21.1)广东省人民医院放射科刘再毅等团队:放射组学、RNA与临床病理表型的整合分析揭示结直肠癌预后风险分层的生物学基础
人工智能·论文·医学·医学影像·影像组学
hmywillstronger1 小时前
【Python】从SAP2000 XML截面库提取数据到Excel
xml·python·excel
前端摸鱼匠1 小时前
【AI大模型春招面试题30】交叉熵损失(Cross-Entropy Loss)在大模型训练中的作用?为何适合语言生成任务?
人工智能·ai·面试·大模型·求职招聘
常常有1 小时前
中间件与依赖系统:构建高效 Web 后端的双重利器
开发语言·python·中间件·fastapi
Hi202402171 小时前
Apollo CUDA-BEVFusion 高性能 3D 目标检测
人工智能·目标检测·3d