Python-初學openCV——圖像預處理(三)

目錄

一、邊緣填充

1、邊界復制

2、邊界反射

3、邊界反射101

4、邊界常數

5、邊界包裹

二、透視變換

三、圖像掩膜

1、制作掩膜

2、與運算

3、顏色替換

?四、ROI切割

?五、圖像添加水印


一、邊緣填充

? ? ? ? 我們對圖像進行處理后,需要對空出來的區域進行一個填充,此外、后續的一些圖像處理方式也會用到邊緣填充

(下面例子會在插值方法后繼續操作)

? ? ? ? 1、邊界復制

cv2.BORDER_REPLICATE

?邊界復制會將邊界處的像素值進行復制,然后作為邊界填充的像素? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?值,如左圖所示,可以看到四周的像素值都一樣


? ? ? ? ?2、邊界反射

cv2.BORDER_REFLECT

如左圖所示,會根據原圖的邊緣進行反射


? ? ? ? ?3、邊界反射101

cv2.BORDER_REFLECT_101

與邊界反射不同的是,不再反射邊緣的像素點,如左圖所示


? ? ? ? ?4、邊界常數

cv2.BORDER_CONSTANT

當選擇邊界常數時,還要指定常數值是多少,默認的填充常數值? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 為0,如左圖所示


? ? ? ? 5、邊界包裹

cv2.BORDER_WRAP

如左圖所示


二、透視變換

? ? ? ? 透視變換就是圖像矯正,是把一個圖像投影到一個新的視平面的過程, 通俗的講,透視變換的作用其實就是改變一下圖像里的目標物體的被觀察的視角

M=getPerspectiveTransform(src,dst)

src:原圖像上需要進行透視變化的四個點的坐標,這四個點用于定義一個原圖中的四邊形區域

dst:透視變換后,src的四個點在新目標圖像的四個新坐標

該函數會返回一個透視變換矩陣,得到透視變化矩陣之后,使用warpPerspective()函數即可進行透視變化計算,并得到新的圖像

cv2.warpPerspective(img, M, dsize, flags, borderMode)

img:輸入圖像。

M:透視變換矩陣。這個矩陣可以通過getPerspectiveTransform函數計算得到。

dsize:輸出圖像的大小。它可以是一個Size對象,也可以是一個二元組。

flags:插值方法的標記。

borderMode:邊界填充的模式

三、圖像掩膜

掩膜(Mask)是一種在圖像處理中常見的操作,它用于選擇性地遮擋圖像的某些部分,以實現特定任務的目標。掩膜通常是一個二值化圖像,并且與原圖像的大小相同,其中目標區域被設置為1(或白色),而其他區域被設置為0(或黑色),并且目標區域可以根據HSV的顏色范圍進行修改

? ? ? ? 1、制作掩膜

mask=cv.inRange(img,color_low,color_high)

左圖是HSV每個顏色的最大最小值

? ? ? ? 2、與運算

當兩個命題都是真時,其結果才為真。而在圖像處理中,“與”運算被用來對圖像的像素值進行操作,掩膜中有很多地方是黑色的,其像素值為0,那么在與原圖像進行“與”運算的時候,得到的新圖像的對應位置也是黑色的

(任何值與上0(黑) 都等于0,任何值與上1(白) 都等于這個值本身)

cv2.bitwise_and(src1,src2[,mask])

src2第一個輸入數組。通常是輸入的原始圖像

src2:第二個輸入數組。它可以是另一個圖像、一個常數值或者與 src1 相同的圖像

? ? ? ? a. 當應用掩膜時,這個參數經常就是src1本身;即對同一個圖像進行操作

? ? ? ? b. 如果對兩個不同的圖像執行按位與操作(例如,將兩張圖片的某些部分組合在一起),可? ? ? ? ? ? ?以分別將它們作為 src1src2 輸入到 cv2.bitwise_and() 函數中,創建復雜的圖像效果? ? ? ? ? ? ? ?或進行圖像合成

mask:掩膜(可選)。輸入數組元素只有在該掩膜非零時才被處理。是一個8位單通道的數組,尺寸必須與src1src2相同

返回值:輸出數組,應用掩膜后的圖像,與輸入數組大小和類型相同

? ? ? ? 3、顏色替換

由于掩膜與原圖的大小相同,并且像素位置一一對應,那么我們就可以得到掩膜中白色(也就是像素值為255)區域的坐標,并將其帶入到原圖像中,然后就可以修改像素值了,這樣就完成了顏色的替換

?四、ROI切割

????????ROI:Region of Interest,翻譯過來就是感興趣的區域,就是通過切片實現,對圖像局部操作

?五、圖像添加水印

????????添加水印的概念其實可以理解為將一張圖片中的某個物體或者圖案提取出來,然后疊加到另一張圖片上。具體的操作思想是通過將原始圖片轉換成灰度圖,并進行二值化處理,去除背景部分,得到一個類似掩膜的圖像。然后將這個二值化圖像與另一張圖片中要添加水印的區域進行“與”運算,使得目標物體的形狀出現在要添加水印的區域。最后,將得到的目標物體圖像與要添加水印的區域進行相加,就完成了添加水印的操作。這樣可以實現將一個圖像中的某個物體或圖案疊加到另一個圖像上,從而實現添加水印的效果

(在roi切片區域的修改是直接在原圖上修改的,指向的是同一內存地址)

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

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

相關文章

【ESP32設備通信】-W5500與ESP32 /ESP32 S3集成

W5500與ESP32 /ESP32 S3集成 文章目錄 W5500與ESP32 /ESP32 S3集成 1、W5500介紹 2、硬件準備與接線 3、代碼實現 3.1 以太網設置 3.2 簡單HTTP請求 3.3 HTTPS請求 3.4 查詢證書 ESP32 憑借其強大的 Wi-Fi 功能,一直是物聯網項目的熱門選擇。ESP32 現在支持帶有 SSL 的原生以太…

vue - 使用canvas繪制驗證碼

封裝繪制驗證碼 verify-code.vue<template><div class"captcha"><canvas ref"canvasRef" :width"width" :height"height" click"refreshCaptcha"></canvas></div> </template><scri…

[10月考試] F

[10月考試] F 題目描述 給定長度為 nnn 的序列 ana_nan?&#xff0c;保證 aia_iai? 為非負整數。 mmm 次詢問&#xff0c;每次給定區間 l,rl,rl,r&#xff0c;求出 al,al1,…,ara_l,a_{l1},\ldots,a_ral?,al1?,…,ar? 的 mexmexmex。 對于一個序列&#xff0c;定義其 mexm…

收集了全球55個AI寫作工具

我們即將推出一整套AI生產力工具矩陣&#xff0c;覆蓋內容創作&#xff08;AI寫作助手&#xff09;、視覺設計&#xff08;智能圖像處理&#xff09;、音視頻制作&#xff08;自動轉錄與編輯&#xff09;及智能編程等多個核心領域。這些解決方案通過先進的機器學習算法&#xf…

Elastic 勞動力的生成式 AI:ElasticGPT 的幕后解析

作者&#xff1a;來自 Elastic Jay Shah, Adhish Thite ElasticGPT — 由 Elastic 提供支持&#xff0c;專為 Elastic 打造 ElasticGPT 是我們基于檢索增強生成&#xff08;RAG&#xff09;框架構建的內部生成式 AI &#xff08;GenAI&#xff09;助手。它是使用 Elastic 自有…

CS231n-2017 Assignment1

KNN&#xff1a;這里要求我們完成一個KNN分類器&#xff0c;實現對圖片使用KNN算法進行分類標簽k_nearest_neighbor.py這里要求我們完成4個接口# X:測試集 # 使用兩個循環 def compute_distances_two_loops(self, X):num_test X.shape[0]num_train self.X_train.shape[0]dist…

[python][flask]Flask-Principal 使用詳解

Flask-Principal 是一個專為 Flask 應用設計的身份管理和權限控制擴展。它能夠幫助開發者輕松實現用戶身份驗證和權限管理&#xff0c;從而提升應用的安全性和用戶體驗。該項目最初由 Ali Afshar 開發&#xff0c;現已成為 Pallets 社區生態系統的一部分&#xff0c;由社區共同…

抖音與B站爬蟲實戰,獲取核心數據

本文將深入講解兩大主流短視頻平臺&#xff08;抖音、B站&#xff09;的爬蟲實戰技術&#xff0c;提供可直接運行的代碼解決方案&#xff0c;并分享突破反爬機制的核心技巧。一、平臺特性與爬蟲難點對比平臺數據價值主要反爬措施推薦抓取方式抖音視頻數據、用戶畫像、熱榜簽名驗…

WSL切換網絡模式

WSL切換網絡模式問題WSL從NAT改成MIRRORED找到WSL Setting修改配置重啟電腦&#xff08;注意不是重啟WSL&#xff09;運行pio run驗證IP問題 從魚香ROS買了一個小魚車&#xff0c;開始學習&#xff0c;然而裝環境都要搞死我了。 垃圾VirtualBox我新買的電腦&#xff0c;裝個Vi…

[Linux入門] Linux 遠程訪問及控制全解析:從入門到實戰

目錄 一、SSH 遠程管理&#xff1a;為什么它是遠程訪問的首選&#xff1f; 1??什么是 SSH&#xff1f; 2??SSH 為什么比傳統工具更安全&#xff1f; 3??SSH 的 “三大組成部分” 4??SSH 工作的 “五步流程” 5??常用 SSH 工具 二、實戰&#xff1a;構建 SSH 遠…

n8n AI資訊聚合與分發自動化教程:從數據獲取到微信與Notion集成

引言 n8n簡介&#xff1a;自動化工作流利器 n8n是一款功能強大的開源自動化工具&#xff0c;采用獨特的“公平代碼”&#xff08;Fair-Code&#xff09;許可模式&#xff0c;旨在幫助用戶連接各種應用程序和服務&#xff0c;從而實現工作流的自動化。它通過直觀的可視化界面&am…

遞歸查詢美國加速-技術演進與行業應用深度解析

在當今數據驅動的時代&#xff0c;遞歸查詢已成為處理層級數據的核心技術&#xff0c;尤其在美國科技領域獲得廣泛應用。本文將深入解析遞歸查詢在美國加速發展的關鍵因素&#xff0c;包括技術演進、行業應用場景以及性能優化策略&#xff0c;幫助讀者全面理解這一重要技術趨勢…

【AIGC專欄】WebUI實現圖片的縮放

圖片的縮放包含如下的各類不同的縮放模型。 Lanczos Lanczos重采樣是一種數學上精確的方法,用于圖像放大或縮小。它使用了一種稱為 sinc 函數的數學公式,可以在保留圖像細節的同時減少鋸齒效應。 Nearest 最近鄰插值是一種簡單的圖像放大方法,通過復制最近的像素值來填充新…

Libevent(4)之使用教程(3)配置

Libevent(4)之使用教程(3)配置事件 Author: Once Day Date: 2025年7月27日 一位熱衷于Linux學習和開發的菜鳥&#xff0c;試圖譜寫一場冒險之旅&#xff0c;也許終點只是一場白日夢… 漫漫長路&#xff0c;有人對你微笑過嘛… 本文檔翻譯于&#xff1a;Fast portable non-bl…

若依前后端分離版學習筆記(三)——表結構介紹

前言&#xff1a; 這一節將ruoyi框架中數據庫中的表結構過一遍&#xff0c;查看都有哪些表及其表結構及關聯關系&#xff0c;為后續代碼學習做準備。 一 代碼生成表記錄代碼生成的業務表及相關字段1 代碼生成業務表 CREATE TABLE gen_table (table_id bigint(20) NOT NULL AUTO…

NFS服務安裝與使用

概述 內網需要使用NFS服務掛載到其他服務器&#xff0c;用做數據備份使用。 安裝 # Centos yum install -y nfs-utils # Ubuntu apt install nfs-common配置 # 編輯 vim /etc/exports # 輸入內容 /public/KOL-ESbackup 172.29.1.0/24 192.168.8.63 192.168.8.64 192.168.8.65(r…

使用adb 發送廣播 動態改變app內的值

前言 在開發過程中有時候我們需要做一些調試工作。可以通過adb發送廣播實現。 廣播注冊 注意最后一個參數&#xff0c;Context.RECEIVER_EXPORTED 這是Android 34以后強制要求的&#xff0c;方便外部發送這個廣播。否則會報錯val filter IntentFilter()filter.addAction("…

【Web安全】邏輯漏洞之URL跳轉漏洞:原理、場景與防御

文章目錄前言一、漏洞本質二、攻擊原理正常跳轉流程漏洞觸發流程三、抓包的關鍵時機&#xff1a;跳轉參數生成時四、風險場景1.登錄/注冊后跳轉2.退出登錄跳轉3.分享/廣告鏈接跳轉4.密碼重置鏈接跳轉五、漏洞挖掘&#xff1a;怎么找到這種漏洞&#xff1f;1.找到跳轉參數2.篡改…

新手開發 App,容易陷入哪些誤區?

新手開發 App 時&#xff0c;常因對流程和用戶需求理解不足陷入誤區&#xff0c;不僅拖慢進度&#xff0c;還可能導致產品無人問津。?功能堆砌是最常見的陷阱。不少新手總想 “一步到位”&#xff0c;在初期版本就加入十幾項功能&#xff0c;比如做社區團購 App 時&#xff0c…

Linux學習篇11——Linux軟件包管理利器:RPM與YUM詳解與實戰指南,包含如何配置失效的YUM鏡像地址

引言 本文主要梳理 Linux 系統中的軟件包的概念&#xff0c;同時介紹RPM與YUM兩大核心管理工具的常用指令、區別聯系以及實戰技巧等。本文作為作者學習Linux系統的第11篇文章&#xff0c;依舊旨在總結當前的學習內容&#xff0c;同時鞏固知識以便日后的學習復習回顧。如有說的…