Open CV圖像基本操作可莉版

Open CV圖像基本操作

  • 一、處理單個像素值
    • 訪問像素值
    • 修改像素值
  • 二、處理單個ROI區域(自選區域)
    • 提取 ROI
    • 修改 ROI
  • 三、 處理圖像通道
    • 通道分離
    • 通道合并
  • 四、處理整體
    • 圖像縮放
    • 圖像旋轉
    • 圖像平移
    • 圖像翻轉


一、處理單個像素值

圖像是由像素組成的矩陣,每個像素都有一個或多個值,表示顏色或灰度。在灰度圖像中,每個像素只有一個值,表示灰度強度;在彩色圖像中,每個像素通常有三個值,分別表示紅色、綠色和藍色(RGB)通道的強度。

訪問像素值

假設我們有一個灰度圖像 img,可以通過 img[y, x] 來訪問位于 (x, y) 位置的像素值。對于彩色圖像,可以通過 img[y, x, c] 來訪問特定通道 c 的像素值,其中 c 為 0(藍色)、1(綠色)或 2(紅色)。

實例

import cv2# 讀取圖像
img = cv2.imread('image.jpg')# 訪問像素值
pixel_value = img[100, 150]  # 訪問 (150, 100) 位置的像素值
print(pixel_value)

修改像素值

實例

# 修改像素值
img[100, 150] = [255, 255, 255]  # 將 (150, 100) 位置的像素值設置為白色

二、處理單個ROI區域(自選區域)

ROI 是指圖像中我們感興趣的區域 (Region of Interest)。通過提取 ROI,我們可以只對圖像的特定部分進行處理,從而提高處理效率。

提取 ROI

在 OpenCV 中,可以通過切片操作來提取 ROI。假設我們想要提取圖像中左上角 100x100 像素的區域:

實例

# 提取 ROI
roi = img[0:100, 0:100]

修改 ROI

提取 ROI 后,可以對其進行修改,然后將修改后的 ROI 放回原圖像中。
實例

# 修改 ROI
roi[:, :] = [0, 255, 0]  # 將 ROI 區域設置為綠色# 將修改后的 ROI 放回原圖像
img[0:100, 0:100] = roi

三、 處理圖像通道

彩色圖像通常由多個通道組成,例如 RGB 圖像的三個通道。有時我們需要將這些通道分離出來進行單獨處理,然后再將它們合并回原圖像。

通道分離

在 OpenCV 中,可以使用 cv2.split() 函數將圖像的通道分離。
實例

# 通道分離
import cv2if __name__ == '__main__':imgPath = 'D:\Word\keli.jpg'img = cv2.imread(imgPath)cv2.imshow('image', img)b, g, r = cv2.split(img)# 下面會依次顯示r,g,b三張圖,每張3秒cv2.imshow('b', b)cv2.waitKey(3000)cv2.imshow('g', g)cv2.waitKey(3000)cv2.imshow('r', r)cv2.waitKey(3000)# 下面會依次保存r,g,b三張圖,不像上面順序是反的cv2.imwrite('D:\Word\keli-r.jpg', r)time.sleep(5)cv2.imwrite('D:\Word\keli-g.jpg', g)time.sleep(5)cv2.imwrite('D:\Word\keli-b.jpg', b)

原圖
可莉原圖
RGB圖
可莉RGB圖

通道合并

分離后的通道可以使用 cv2.merge() 函數合并回原圖像。

實例

# 通道合并
merged_img = cv2.merge([b, g, r])

四、處理整體

圖像的幾何變換是圖像處理中常見的操作,包括縮放、旋轉、平移和翻轉。

圖像縮放

圖像縮放可以通過 cv2.resize() 函數實現。可以指定縮放后的圖像尺寸或縮放比例。

實例

# 圖像縮放
resized_img = cv2.resize(img, (200, 200))  # 將圖像縮放為 200x200 像素

圖像旋轉

圖像旋轉可以通過 cv2.getRotationMatrix2D() 和 cv2.warpAffine() 函數實現。需要指定旋轉中心和旋轉角度。

實例

# 圖像旋轉# 取高和寬h, w = img.shape[:2]# 計算旋轉中心center = (int(w/2), int(h/2))# 得到2維線性變化M = cv2.getRotationMatrix2D(center, 180, 1)# 將變化作用到img上img = cv2.warpAffine(img, M, (w, h))# 顯示cv2.imshow('img', img)cv2.waitKey(0)

圖像平移

圖像平移可以通過 cv2.warpAffine() 函數實現。需要指定平移矩陣。

實例

# 圖像平移# 向右平移 100 像素,向下平移 50 像素M2 = np.float32([[1, 0, 100], [0, 1, 50]])img = cv2.warpAffine(img, M2, (w, h))cv2.imshow('img', img)cv2.waitKey(0)

平移以后空的地方顯示黑色背景
移動后

圖像翻轉

圖像翻轉可以通過 cv2.flip() 函數實現。可以指定翻轉方向(水平、垂直或兩者)。

實例

# 圖像翻轉
flipped_img = cv2.flip(img, 1)  # 水平翻轉

計劃后面都用這一張原創圖練習

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

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

相關文章

k8s:將打包好的 Kubernetes 集群鏡像推送到Harbor私有鏡像倉庫

本文介紹了在離線環境中部署Harbor鏡像倉庫的完整流程。首先通過腳本創建多個Harbor項目,然后使用KubeKey工具將預打包的Kubernetes鏡像(kubesphere.tar.gz)推送到Harbor倉庫。接著配置containerd以支持從私有倉庫拉取鏡像,包括設置TLS證書和鏡像倉庫端點…

IntelliJ IDEA中管理多版本Git子模塊的完整指南

1.背景介紹項目是父子工程。父工程XXX-ZZZ-CCC。子模塊XXX-api在線上git網站管理,有多個分支版本。現在需要接收別人代碼,導入到本機管理。可以實現本機切換,修改,上傳。2.創建本地倉庫并拉取所有版本2.1.創建目錄在D:\ideaworkspace\midend-…

Android ADB命令之內存統計與分析

一、核心命令總覽工具 / 命令用途示例adb shell dumpsys meminfo查看設備全局內存狀態adb shell dumpsys meminfoadb shell dumpsys meminfo <package>獲取應用詳細內存分類統計adb shell dumpsys meminfo com.example.appadb shell top動態查看進程內存和 CPU 占用adb s…

算法思維進階 力扣 300.最長遞增子序列 暴力搜索 記憶化搜索 DFS 動態規劃 C++詳細算法解析 每日一題

目錄零、題目描述一、為什么這道題值得你深入理解&#xff1f;二、題目拆解&#xff1a;提取核心關鍵點三、明確思路&#xff1a;從暴力到優化的完整進化3. 進一步優化&#xff1a;動態規劃&#xff08;自底向上遞推&#xff09;4. 終極優化&#xff1a;貪心 二分查找&#xf…

圖解網絡-小林coding筆記(持續更新)

大綱 #mermaid-svg-trl6Q4B1uDO1z05w {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-trl6Q4B1uDO1z05w .error-icon{fill:#552222;}#mermaid-svg-trl6Q4B1uDO1z05w .error-text{fill:#552222;stroke:#552222;}#merm…

安寶特案例丨AR+AI+SOP?3大技術融合革新軍工航天領域

軍工、航空、航天領域存在 “小批量、多品種、依賴人工經驗裝配”的特性&#xff0c;這長期制約著生產效率與產品質量的提升。 技術融合應用案例 1 Arbigtec 裝配效率提升類&#xff1a; 某型導彈制導系統裝配&#xff1a;采用 AR 眼鏡與 AI 視覺引導系統&#xff0c;200 精…

ip link show 查看/配置網絡接口

ip link show&#xff08;或簡寫為 ip link&#xff09;是 Linux 系統中用于查看和配置網絡接口&#xff08;網卡、虛擬接口等&#xff09;的命令&#xff0c;屬于 iproute2 工具集的一部分。它是現代 Linux 系統中替代傳統 ifconfig 命令的更強大工具。命令詳解 基本語法 ip l…

電科金倉新一代數據庫一體機:以 “云數據庫 - AI 版” 引領 AI 時代數據庫變革

前言 AI時代的數據庫一體機市場&#xff0c;只能用兩個詞來形容&#xff1a;高手云集&#xff0c;戰況激烈&#xff01; 國際巨頭仍在高端市場占據主導地位&#xff0c;但在國產替代的沖擊下&#xff0c;也開始另尋突破口&#xff1b;國內科技大廠攻勢迅猛&#xff0c;通過開源…

IT運維的365天--033 跨交換機部署沒有單獨供電口的愛快AP到另一個地方去

前情提要&#xff1a;由于工作需要&#xff0c;領導要求在車間也添加一個無線網絡供員工和設備使用&#xff0c;之前公司已經有一個愛快網絡供員工使用&#xff0c;且物理隔絕部署在集團辦公樓這邊了。我一向是不喜歡碰到一個小事就拉一條網線&#xff0c;那樣不得搞的跟蜘蛛網…

Flutter開發實戰之路由與導航

第5章:路由與導航 在移動應用開發中,頁面間的跳轉是最基本也是最重要的功能之一。就像我們在現實生活中需要從一個房間走到另一個房間一樣,在App中,用戶需要在不同的界面間自由切換。Flutter提供了強大而靈活的路由系統來管理這些頁面跳轉,本章將深入探討Flutter的路由與…

Android 圖像編輯實戰指南:從基礎操作到進階效果

在移動應用中&#xff0c;圖像編輯功能已成為標配 —— 社交 APP 需要裁剪頭像&#xff0c;電商 APP 需要給商品圖加水印&#xff0c;工具 APP 需要提供濾鏡效果。看似簡單的 “裁剪”“縮放” 背后&#xff0c;實則涉及 Bitmap 像素操作、內存管理、性能優化等核心技術。很多開…

Java從入門到精通!第十八天(JDK17安裝以及網絡編程) 完結篇!!!

三、網絡編程1&#xff0e;網絡編程概述Java 是 Internet 上的語言&#xff0c;它從語言級上提供了對網絡應用程序的支持&#xff0c;程序員能夠很容易開發常見的網絡應用程序。2&#xff0e;網絡的基礎&#xff08;1&#xff09;計算機網絡把分布在不同地理區域的計算機與專門…

C++ STL常用容器總結(vector, deque, list, map, set)

C STL常用容器總結&#xff08;vector, deque, list, map, set&#xff09;1. vector&#xff08;動態數組&#xff09;特點定義和初始化常用操作遍歷方法2. deque&#xff08;雙端隊列&#xff09;特點定義和初始化常用操作3. list&#xff08;雙向鏈表&#xff09;特點定義和…

智能小車(F103C8T6)RT-THREAD版

前言 前面幾章學會了PWM,超聲波等&#xff0c;現在剛好結合起來控制智能小車 1&#xff1a;環境 KEIL5.38 RT-THREAD 3.1.3 STM32F103C8T6 2&#xff1a;硬件配件&#xff08;原來網上買的一套&#xff09; STM32F103C8T6 一個 MCU底板 一個 SG90 舵機 一個 紅外避障 2個 hc-…

Linux 遠程連接與文件傳輸:從基礎到高級配置

Linux 遠程連接與文件傳輸&#xff1a;從基礎到高級配置 在 Linux 系統管理中&#xff0c;遠程連接和文件傳輸是核心技能。SSH 協議提供了安全的遠程訪問方式&#xff0c;而基于 SSH 的 SFTP 和 SCP 則解決了跨服務器文件傳輸的需求。下面將詳細解析 SSH 服務配置、三種遠程操作…

17. 如何修改 flex 主軸方向

總結 flex-direction: row | row-reverse | column | column-reverse;一、作用說明 在 Flex 布局中&#xff0c;默認的主軸&#xff08;main axis&#xff09;方向是 水平向右&#xff08;即 row&#xff09;。 通過設置 flex-direction 屬性&#xff0c;可以靈活改變主軸的方向…

【Linux】重生之從零開始學習運維之mysql用戶管理

mariadb用戶管理創建用戶create user test210.0.0.% identified by 123456;用戶改名rename user test210.0.0.% to test310.0.0.%;用戶刪除 drop user test310.0.0.%;mysql用戶管理創建用戶create user test210.0.0.% identified by 123456;用戶改名rename user test210.0.0.% …

matlab小計

3.變量命名_嗶哩嗶哩_bilibili clc 清空頁面 文件名&#xff1a;字母開頭 clc:清除命令行窗口 clear all&#xff1a;清除工作區變量 編譯器里面 %%注釋 24 2-4 2*4 4/2 cumsum累計和 312 6123 movsum:滑窗計算數值 eg步長是3 1236 2349 6 9 ... 按列求最大值 先列…

getdents64系統調用及示例

getdents64 函數詳解 1. 函數介紹 getdents64 是 Linux 系統中用于讀取目錄內容的底層系統調用。可以把這個函數想象成一個"目錄內容掃描儀"——它能夠高效地掃描目錄中的所有文件和子目錄,就像超市的掃描槍快速讀取商品條碼一樣。 與高級的目錄操作函數(如 rea…

HBuilder X打包發布微信小程序

一、獲取AppId 二、獲取微信小程序AppId 三、發行->微信小程序&#xff0c;調起微信開發者工具 四、點擊上傳,上傳至微信公眾平臺 五、微信公眾平臺查看版本管理 完結&#xff01;&#xff01;&#xff01;