人工智能算法工程師(中級)課程1-Opencv視覺處理之基本操作與代碼詳解

大家好,我是微學AI,今天給大家介紹一下人工智能算法工程師(中級)課程1-Opencv視覺處理之基本操作與代碼詳解。OpenCV(Open Source Computer Vision Library)是一個開源的計算機視覺和機器學習軟件庫。它提供了各種視覺處理函數,并支持多種編程語言,如C++、Python、Java等。OpenCV具有跨平臺性,可以在不同的操作系統上運行。它廣泛應用于圖像處理、視頻分析、物體識別、人臉識別、動作識別等領域。

文章目錄

  • 一、Opencv的基本操作
    • 1. 圖像讀取和保存
    • 2. 視頻讀取和保存
    • 3. 圖像通道操作
    • 4. 圖像色彩空間
    • 5. 圖像閾值操作
    • 6. 圖像掩碼操作
    • 7. 圖像混合操作
    • 8. 圖像插值算法

一、Opencv的基本操作

1. 圖像讀取和保存

讀取圖像使用cv2.imread(),保存圖像使用cv2.imwrite()
我們準備一張圖片,例如這張:
在這里插入圖片描述

將其命名為image.jpg,然后運行以下代碼:

import cv2
# 讀取圖像
image = cv2.imread('image.jpg')
# 保存圖像
cv2.imwrite('new_image.jpg', image)

2. 視頻讀取和保存

讀取視頻使用cv2.VideoCapture(),保存視頻使用cv2.VideoWriter()

import cv2
# 讀取視頻
cap = cv2.VideoCapture('video.mp4')
# 定義視頻保存的格式
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi', fourcc, 20.0, (640, 480))
while cap.isOpened():ret, frame = cap.read()if ret:# 寫入視頻幀out.write(frame)# 顯示視頻幀cv2.imshow('frame', frame)if cv2.waitKey(1) & 0xFF == ord('q'):breakelse:break
# 釋放所有資源
cap.release()
out.release()
cv2.destroyAllWindows()

3. 圖像通道操作

在OpenCV中,BGR圖像的三個通道可以分別訪問和操作。

import cv2
import numpy as np
image = cv2.imread('image.jpg')
# 分離通道
b, g, r = cv2.split(image)
# 合并通道
merged = cv2.merge([b, g, r])
# 顯示藍色通道
cv2.imshow('Blue channel', b)
cv2.waitKey(0)
cv2.destroyAllWindows()

4. 圖像色彩空間

OpenCV支持多種色彩空間轉換,常用的有BGR到灰度圖、BGR到HSV等。

import cv2
image = cv2.imread('image.jpg')
# 轉換為灰度圖像
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 轉換為HSV色彩空間
hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)

5. 圖像閾值操作

閾值操作可以將圖像轉換為二值圖像。

import cv2
import numpy as np
image = cv2.imread('image.jpg', 0)
# 應用固定閾值操作
_, thresh1 = cv2.threshold(image, 127, 255, cv2.THRESH_BINARY)
cv2.imshow('Binary image', thresh1)
cv2.waitKey(0)
cv2.destroyAllWindows()

6. 圖像掩碼操作

掩碼操作允許您選擇圖像的特定區域進行操作。

import cv2
import numpy as np
image = cv2.imread('image.jpg')
# 創建掩碼
mask = np.zeros(image.shape[:2], np.uint8)
mask[100:300, 100:400] = 255
# 應用掩碼
masked_image = cv2.bitwise_and(image, image, mask=mask)
cv2.imshow('Masked image', masked_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

7. 圖像混合操作

圖像混合是將兩幅圖像按照一定的比例合并。

import cv2
import numpy as np
image1 = cv2.imread('image1.jpg')
image2 = cv2.imread('image2.jpg')
# 圖像混合
blended = cv2.addWeighted(image1, 0.7, image2, 0.3, 0)
cv2.imshow('Blended image', blended)
cv2.waitKey(0)
cv2.destroyAllWindows()

8. 圖像插值算法

插值算法在圖像縮放時使用,常見的有最近鄰插值、雙線性插值、雙三次插值等。

import cv2
image = cv2.imread('image.jpg')
# 圖像縮放,使用雙線性插值
resized_image = cv2.resize(image, None, fx=0.5, fy=0.5, interpolation=cv2.INTER_LINEAR)
cv2.imshow('Resized image', resized_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

以上代碼示例展示了如何使用OpenCV進行基本的圖像和視頻處理任務。這些操作是計算機視覺應用的基礎,可以用于更復雜的應用,如物體檢測、人臉識別等。
大家請注意:我們要確保替換image.jpgvideo.mp4image1.jpgimage2.jpg為大家的實際文件名。同時,確保安裝.

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/44275.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/44275.shtml
英文地址,請注明出處:http://en.pswp.cn/web/44275.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Redis為什么變慢了?一文講透如何排查Redis性能問題

Redis 作為優秀的內存數據庫,其擁有非常高的性能,單個實例的 OPS 能夠達到 10W 左右。但也正因此如此,當我們在使用 Redis 時,如果發現操作延遲變大的情況,就會與我們的預期不符。 你也許或多或少地,也遇到…

以太網中的各種幀結構

幀結構(Ethernet Frame Structure)介紹 以太網信號幀結構(Ethernet Signal Frame Structure),有被稱為以太網幀結構,一般可以分為兩類 —— 數據幀和管理幀。 按照 IEEE 802.3,ISO/IEC8803-3 …

短視頻矩陣管理系統:如何提升內容質量,幫助企業獲客?

在數字化營銷蓬勃發展的今天,短視頻已成為企業推廣的重要陣地。然而,如何高效管理短視頻內容,提升內容質量,進而幫助企業精準獲客,成為企業亟待解決的問題。短視頻矩陣管理系統應運而生,以其強大的功能和靈…

TCP/IP協議超時重傳,以及應用層超時重傳一文詳解

很多人會有這樣的疑問 TCP/IP協議內置了超時重傳的功能,那為什么連接完全斷開或超時時,應用層代碼段還會進行重傳處理呢? TCP協議的重傳機制 客戶端 服務器| ||---- 數據段1 --…

編程范式之并發編程

目錄 前言1. 并發編程的定義2. 并發編程的特點2.1 任務交替執行2.2 狀態共享與同步2.3 并行執行 3. 并發編程的適用場景3.1 高性能計算3.2 I/O 密集型應用3.3 實時系統 4. 并發編程的優點4.1 提高資源利用率4.2 縮短響應時間4.3 提高系統吞吐量 5. 并發編程的缺點5.1 編程復雜性…

硬盤模式vmd怎么改ahci_電腦vmd改ahci模式詳細步驟

最近有很多網友問,我新買的電腦安裝原版win10或win11找不到驅動器呀,進入第三方pe又找不到硬盤,找到硬盤安裝后又出現安裝藍屏的情況,新機器怎么回事呀?這位網友內心有點崩潰,不知道啥原因。其實這些都是由…

初識c++(類與對象——上)

一、類的定義 1、類定義格式 ? class為定義類的關鍵字,Stack為類的名字,{}中為類的主體,注意類定義結束時后面分號不能省 略。類體中內容稱為類的成員:類中的變量稱為類的屬性或成員變量; 類中的函數稱為類的方法或 者成員函…

損失函數 - Transformer教程

在人工智能和深度學習的領域,Transformer模型已經成為了非常流行的選擇。而在Transformer模型的訓練過程中,損失函數扮演了至關重要的角色。今天,我們就來深入探討一下什么是損失函數,以及它在Transformer中的應用。 什么是損失函…

【Node.js安裝教程】

Node.js安裝教程 第一步:下載 下載鏈接:https://nodejs.org/zh-cn 第二步:安裝 **方法一:**建議安裝在默認路徑 方法二:如果不是默認安裝路徑可能會出現一系列問題:這時可以選擇卸載重裝或者配置環境變量…

kotlin數據類型

人不走空 🌈個人主頁:人不走空 💖系列專欄:算法專題 ?詩詞歌賦:斯是陋室,惟吾德馨 Kotlin基本數值類型 基本數據類型包括 Byte、Short、Int、Long、Float、Double 整數類型 類型位寬最小值最大…

安卓微信8.0之后如何利用緩存找回的三天之前不可見的朋友圈圖片

安卓微信8.0之后如何利用緩存找回的三天之前不可見的朋友圈圖片 復習了下安卓程序的知識,我們會了解到,安卓程序清楚數據的時候有兩個選項 一個是清除全部數據一個是清除緩存。 清除全部數據表示清除應用數據緩存。 對于安卓微信8.0之后而言&#xff0…

OTP防重放攻擊

OTP本意是一次性口令,比如郵箱驗證碼,短信驗證碼,或者根據totp或者hotp生成的默認30秒一變的6位數字。 不過開發者要注意,必須要在驗證成功后失效那個驗證碼,不然就會導致重放攻擊。 對于郵箱驗證碼,服務器…

徹底開源,免費商用,上海AI實驗室把大模型門檻打下來

終于,業內迎來了首個全鏈條大模型開源體系。 大模型領域,有人探索前沿技術,有人在加速落地,也有人正在推動整個社區進步。 就在近日,AI 社區迎來首個統一的全鏈條貫穿的大模型開源體系。 雖然社區有LLaMA等影響力較大…

從 ArcMap 遷移到 ArcGIS Pro

許多 ArcMap 用戶正在因 ArcGIS Pro 所具有的現代 GIS 桌面工作流優勢而向其遷移。 ArcGIS Pro 與其余 ArcGIS 平臺緊密集成,使您可以更有效地共享和使用內容。 它還將 2D 和 3D 組合到一個應用程序中,使您可以在同一工程中使用多個地圖和多個布局。 Arc…

【C++雜貨鋪】C++11新特性

目錄 🌈 前言🌈 📁 C11介紹 📁 統一初始化列表 📁 聲明 📂 auto 📂 decltype 📂 返回類型后置 📂 范圍for 📂 模板別名 📂 nullptr &#x1…

服務器使用PC作為代理訪問外網

1、PC上啟動代理,比如nginx 下載nginx:http://nginx.org/en/download.html 修改配置文件,在conf下: http {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;server…

六、 SpringBoot 配置?件 ★ ?

六、 SpringBoot 配置?件 本節?標1. 配置?件作?2. 配置?件快速??3. 配置?件的格式4. properties 配置?件說明4.1 properties 基本語法4.2 讀取配置?件4.3 properties 缺點分析 5. yml 配置?件說明5.1 yml 基本語法5.2 yml 使?進階5.2.1 yml 配置不同數據類型及 nul…

昇思25天學習打卡營第17天|文本解碼原理--以MindNLP為例

文本解碼就是根據當前已經輸入的內容不斷地預測下一個詞,前期通過大量的文本文章等輸入,讓模型學習好以后,根據已學習的內容,不斷預測下一個詞。就像鸚鵡學舌一樣你不斷的叫他說你好大帥哥,你好大帥哥。后面某一天&…

好用的源代碼加密軟件有哪些?5款源代碼防泄密軟件推薦

源代碼作為軟件產品的核心組成部分,其安全性直接關系到整個軟件系統的安全。源代碼的泄露可能導致企業的技術秘密暴露,商業競爭力下降,甚至可能引發經濟損失和法律責任問題。因此,對源代碼進行加密保護,已經成為企業不…

windows安裝啟動mysql8.0版本的簡單流程

1.下載mysql8.0.25版本 MySQL :: Download MySQL Community Server (Archived Versions) 2.解壓到D盤的mysql文件夾,并修改環境變量 配置環境變量: winr鍵>輸入control system>高級系統設置>點擊環境變量 雙擊path后,新建 將bin目錄粘貼進去,再點擊確定 在cmd命令行…