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

目錄

一、圖像仿射變換

1、基本性質

二、cv2.warpAffine() 函數

1、圖像旋轉

2、圖像平移

3、圖像縮放

4、圖像剪切

三、 插值方法

1、最近鄰插值

2、雙線性插值

3、像素區域插值?

4、雙三次插值?

5、Lanczos插值


一、圖像仿射變換

仿射變換(Affine Transformation)是一種線性變換,保持了點之間的相對距離不變

? ? ? ? 1、基本性質

????????????????保持直線

? ??????????????保持平行

????????????????比例不變性

????????????????不保持角度和長度

二、cv2.warpAffine() 函數

? ? ? cv2.warpAffine() 是 OpenCV 中用來對圖像進行仿射變換的函數。仿射變換是一種保? ? ? ? ? ? ? ?直線和比例的變換,可以包括平移、旋轉、縮放和傾斜等操作

#仿射變換函數
cv2.warpAffine(img,M,dsize)

參數:

img:輸入圖像

M:2x3的變換矩陣,類型為np.float32

dsize:輸出圖像的尺寸,形式為(width,height)

? ? ? ? 1、圖像旋轉

????????????????旋轉圖像可以將圖像繞著某個點旋轉一定的角度

????????????????cv2.getRotationMatrix2D()函數

cv2.getRotationMatrix2D(center,angle,scale)

參數:

center:旋轉中心點的坐標,格式為(x,y)

angle:旋轉角度,單位為度,正值表示逆時針旋轉、負值表示順時針旋轉

scale:縮放比例,若設為1,則不縮放

返回值(M):2x3的旋轉矩陣

? ? ? ? 2、圖像平移

?????????????????平移操作可以將圖像中的每個點沿著某個方向移動一定的距離?

? ? ? ? ?3、圖像縮放

????????????????縮放操作可以改變圖片的大小

? ? ? ? 4、圖像剪切

????????????????剪切操作可以改變圖形的形狀,以便其在某個方向上傾斜,它將對象的形狀改變為斜邊? ? ? ? ? ? 平行四邊形,而不改變其面積

?

三、 插值方法

插值(Interpolation)是一種通過已知數據點之間的推斷或估計來獲取新數據點的方法,在圖像處理中常用于處理圖像的放大、縮小、旋轉、變形等操作,以及處理圖像中的像素值

圖像插值算法是為了解決圖像縮放或者旋轉等操作時,由于像素之間的間隔不一致而導致的信息丟失和圖像質量下降的問題。當我們對圖像進行縮放或旋轉等操作時,需要在新的像素位置上計算出對應的像素值,而插值算法的作用就是根據已知的像素值來推測未知位置的像素值

方法鄰域大小平滑度計算速度適用場景
最近鄰1 x 1最差最快像素藝術、實時預覽
雙線性2 x 2中等中等通用縮放
雙三次4 x 4最佳最慢高質量放大/縮小
像素區域動態區域中等縮小抗鋸齒

? ? ? ?

1、最近鄰插值

CV2.INTER_NEAREST

原理與步驟

????????距離計算:對于待插值的位置(如圖像中的非整數坐標點),計算它與所有已知數據點的距? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 離(通常用歐氏距離)。

????????最近點選擇:找到距離最近的那個已知數據點。

????????賦值:直接將該最近點的值賦給待插值位置。

(最近鄰插值適合對速度要求高、對質量要求低的場景)

? ? ? ? 2、雙線性插值

CV2.INTER_LINEAR

雙線性插值(Bilinear interpolation)是圖像縮放、旋轉、幾何校正中最常用的一種平滑插值方法。它通過兩次一維線性插值(先水平、后垂直)來計算目標點的值,避免了最近鄰插值的“鋸齒”問題

? ? ? ? 3、像素區域插值?

cv2.INTER_AREA

一種專為圖像縮小(下采樣)設計的插值方法。把目標圖像的一個像素,反向映射回原圖對應的一個“區域”,然后取該區域所有原像素的平均值作為結果

縮小圖像時,一個目標像素可能覆蓋原圖的多個像素(例如縮小 50% 時,1 個目標像素對應原圖 2×2=4 個像素)像素區域插值通過“區域平均”強制抗鋸齒,效果更自然

? ? ? ? 4、雙三次插值?

cv2.INTER_CUBIC

雙三次插值(Bicubic interpolation)是一種高階、平滑的二維插值方法,通過對目標點周圍 16 個(4×4)已知像素 進行三次多項式加權來得到插值結果。它是圖像處理中放大圖像時質量最好的算法之一

? ? ? ? 5、Lanczos插值

cv2.INTER_LANCZOS4

Lanczos插值方法與雙三次插值的思想是一樣的,不同的就是其需要的原圖像周圍的像素點的范圍變成了8*8,并且不再使用BiCubic函數來計算權重,而是換了一個公式計算權重

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

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

相關文章

醫療AI輕量化部署方案的深度梳理與優化路徑判研

摘要 醫療AI的快速發展為精準診斷、個性化治療和醫療資源優化提供了新機遇。然而,大規模模型的高計算復雜度和資源需求限制了其在資源受限環境(如邊緣設備、基層醫療機構)的應用。本文系統梳理了醫療AI輕量化部署的核心技術體系,包括模型壓縮、參數高效微調(PEFT)、邊緣-…

SSP通過SDK對接流量的原理與實現

一、核心概念解析 1.1 SSP(供應方平臺) 定義:SSP是程序化廣告生態中媒體方的核心工具,通過自動化技術幫助媒體(如網站、應用、視頻平臺)管理廣告資源、優化填充率并最大化廣告收益。核心功能:…

如何清理電腦c盤內存 詳細操作步驟

電腦使用時間不斷延長,許多用戶可能會遇到一個問題——C盤空間不足,導致系統運行緩慢或無法安裝新程序。如果C盤的存儲空間被大量占用,可能會影響到計算機的性能。本文將介紹幾種有效的方法,幫助你清理C盤內存,釋放空間…

ESP32的ADF詳解:5. Streams的API

一、算法流 (algorithm stream) 1. 初始化與配置API功能描述關鍵參數說明algo_stream_init()初始化算法流(AEC/AGC/NS/VAD)config->algo_mask 選擇算法組合config->sample_rate 設置采樣率(默認16kHz)config->partition_…

JavaScript對象鍵序問題解析

問題的發現: 我有一個接口返回一個json數據瀏覽器network里的Response里是從大到小排。 但Preview就是反過來的 問題的描述: 上面那個讓我發現瀏覽器處理對象或者json是會對其鍵值對做排序!!! 在JavaScript中&am…

pandas庫的數據導入導出,缺失值,重復值處理和數據篩選,matplotlib庫 簡單圖繪制

目錄 一.數據導入導出 1.CSV文件讀取與參數說明 2.Excel與TST文件讀取 3.數據導出操作 二.缺失值處理 1.填充缺失值 2.刪除缺失值【刪除整行數據】 三.重復值處理 四.數據篩選與條件查詢 1.邏輯判斷取數 2.字符匹配 3.邏輯運算: &(和&…

FPGA?如何實現另一個?FPGA?

如果你對 FPGA 有些了解,大概知道它的意思是“可編程邏輯器件”,可以把寫好的邏輯電路(通常是 Verilog/VHDL)通過工具綜合、布局布線、燒寫進去,讓一塊芯片變成“你想要的電路”。但如果我告訴你,現在有個開…

文思助手、新華妙筆 AI材料星的公文寫作深度測評

公文寫作一直都是體制內工作人員的日常核心任務,寫公文的難點不僅來自于對政策表述嚴謹性的高要求,也在于格式規范、內容深度以及效率壓力的多重考驗。隨著AI技術的發展,越來越多的文字輔助工具出現,很大程度的緩解了寫作壓力&…

Flutter開發環境搭建與工具鏈

Flutter開發實戰第1章:Flutter開發環境搭建與工具鏈1.1 Flutter簡介與優勢Flutter是Google推出的開源UI工具包,用于從單一代碼庫構建編譯為原生性能的移動、Web和桌面應用程序。Flutter的核心優勢包括:跨平臺一致性:一套代碼運行在…

io_uring:Linux異步I/O的革命性突破

目錄 1. io_uring是什么? io_uring核心優勢: 2. io_uring核心原理 2.1 雙環形緩沖區設計 2.2 關鍵數據結構 1、完成隊列CQ 2、提交隊列SQ 3、Params 3. io_uring工作流程 3.1 初始化階段 3.2 I/O操作流程 4. C代碼示例(原始系統調…

線段樹學習筆記 - 練習題(2)

文章目錄1. 前言2. P3870 [TJOI2009] 開關3. P2184 貪婪大陸4. P1438 無聊的數列5. P1471 方差1. 前言 線段樹系列文章: 線段樹學習筆記。線段樹學習筆記 - 練習題(1)。 前一篇做了幾道線段樹的題目,這篇文章就繼續看下線段樹的…

Vue狀態管理:Pinia 與 Vuex 的使用方法與對比【文章附有完整案例】

最近在接手vue項目的需求,因為之前一直在做react的需求,日常的vue練習也少了很多,導致現在接手vue項目,很多關于vue的知識點基本上忘得干干凈凈了。但是好在有基礎,重新學也會很快掌握。分享這個過程中的一些復習內容。…

OpenMed 項目深度分析:推動醫療 NLP 領域的開源革命

摘要 醫療人工智能(AI)領域因高質量數據和模型的獲取受限而發展緩慢。OpenMed 項目通過開源超過380個醫療命名實體識別(NER)模型,顯著降低了研究與應用門檻。本文從項目背景、技術優勢、應用場景、實施挑戰及未來展望五個方面,系統分析 OpenMed 的核心價值與潛力,揭示其…

大模型開發

什么是Ai?AI的全拼是(Artificial Intelligence)人工智能,使機器能夠像人類一樣思考、學習和解決問題的技術。在AI的應用情況下我們更多的是學習自然語言處理。在自然語言處理(Natural Language Processing,NLP)中,有一項關鍵技術叫…

【正常配置了beast擴展,phpinfo信息也顯示了,但是就是不運行】

正常配置了beast擴展,phpinfo信息也顯示了,但是就是不運行場景原因解決排查過程擴展場景 項目中使用到了beast進行源碼保護,指定類存在,但是報錯信息提示類找不到,beast擴展添加到了正在運行的php版本下的ext文件夾下…

CRMEB 單商戶PRO多商戶通用去版權教程

CRMEB去版權教程,此教程可根據具體版本進行調整,基本適用次方法。 后端版權修改 修改后端管理底部版權及門店后端管理底部版權。 文件位置 \view\admin\src\components\copyright\index.vue 文件位置 \view\admin\src\router\routes.js 文件位置 \vi…

舊物回收小程序系統開發:重塑舊物回收產業新生態

在傳統觀念中,舊物回收往往給人一種臟亂差、效率低下的印象,回收過程繁瑣,回收渠道有限,導致許多可回收物被浪費。然而,隨著信息技術的飛速發展,舊物回收小程序系統的開發正為這一古老行業帶來前所未有的變…

SSE和WebSocket區別到底是什么

文章目錄SSE 與 WebSocket:深入剖析兩者核心差異核心差異:單向 vs. 雙向通信技術細節對比協議與連接數據格式錯誤處理與可靠性適用場景:何時選擇 SSE,何時選擇 WebSocket?總結SSE 與 WebSocket:深入剖析兩者…

西安電子科技大學金融學431考研經歷分享

考研數學是區分度最大的科目之一,如何高效備考?本文為你推薦多位名師和經典書籍,助你在每個階段都能穩步提升,最終沖刺成功。一、考研數學備考策略教師推薦① 高等數學:② 線性代數:③ 概率論與數理統計&am…

laravel RedisException: Connection refused優雅草PMS項目管理系統報錯解決-以及Redis 詳細指南-優雅草卓伊凡

laravel RedisException: Connection refused優雅草PMS項目管理系統報錯解決-以及Redis 詳細指南-優雅草卓伊凡今天來開始更新pms系統,因為我們ppt上面要做,才發現原來打不開,此前主要是事情太多,我們一直有很多東西擱置解決 Lara…