圖像處理基礎:鏡像、縮放與矯正

在圖像處理中,鏡像、縮放和矯正操作是常見的圖像變換手段。這些操作可以幫助我們對圖像進行調整,以滿足不同的需求。本文將詳細介紹這三種操作的原理和實現方法,并通過代碼示例展示它們的實際應用。

一、圖片鏡像旋轉

1.1 什么是鏡像旋轉?

鏡像旋轉是一種特殊的圖像變換,它通過水平、垂直或水平垂直翻轉來改變圖像的方向。與常規的旋轉不同,鏡像旋轉不需要指定旋轉中心,而是直接圍繞圖像的中心進行翻轉。

  • 水平翻轉:將圖像沿 y 軸翻轉,坐標從 (x, y) 變為 (-x, y)

  • 垂直翻轉:將圖像沿 x 軸翻轉,坐標從 (x, y) 變為 (x, -y)

  • 水平垂直翻轉:同時進行水平和垂直翻轉,坐標從 (x, y) 變為 (-x, -y)

1.2 實現代碼

在 OpenCV 中,可以使用 cv2.flip 函數來實現鏡像旋轉。cv2.flip 的參數 flipCode 決定了翻轉的方向:

  • 0:垂直翻轉

  • > 0:水平翻轉

  • < 0:水平垂直翻轉

以下是實現代碼:

import cv2# 0:垂直翻轉
# 大于0:水平翻轉
# 小于0:水平垂直翻轉
def test001():img = cv2.imread("./opencv_work/src/rabbit.png")img_flip = cv2.flip(img, 1)cv2.imshow("img", img)cv2.imshow("img_flip", img_flip)cv2.waitKey(0)if __name__ == '__main__':test001()

1.3 應用場景

鏡像旋轉常用于圖像增強、數據預處理以及生成圖像變體。例如,在訓練機器學習模型時,可以通過鏡像旋轉來增加數據的多樣性。

二、圖像縮放

2.1 什么是圖像縮放?

圖像縮放是指改變圖像的尺寸,使其變大或變小。在縮放過程中,需要通過插值算法來計算新像素的值,以保持圖像的質量。

OpenCV 提供了多種插值方法,包括:

  • 最近鄰插值:速度最快,但圖像質量較差。

  • 雙線性插值:圖像質量較好,計算速度適中。

  • 雙三次插值:圖像質量最高,但計算速度較慢。

  • Lanczos 插值:適用于高質量的圖像縮放。

2.2 實現代碼

在 OpenCV 中,可以使用 cv2.resize 函數來實現圖像縮放。以下是代碼示例:

import cv2def test001():img = cv2.imread("./opencv_work/src/rabbit.png")img2=cv2.resize(img,dsize=(200,200),interpolation=cv2.INTER_LINEAR)cv2.imshow("img",img)cv2.imshow("img2",img2)cv2.waitKey(0)if __name__ == '__main__':test001()

2.3 應用場景

圖像縮放常用于圖像預處理、圖像顯示以及生成不同分辨率的圖像。例如,在網頁設計中,需要將圖像縮放到不同的尺寸以適應不同的屏幕分辨率。

三、圖像矯正

3.1 什么是圖像矯正?

圖像矯正是通過透視變換來校正圖像中的透視畸變。透視變換是一種將圖像投影到新視平面的過程,它可以改變圖像的視角,使圖像中的物體看起來更符合直觀感受。

3.2 實現代碼

在 OpenCV 中,可以使用 cv2.getPerspectiveTransformcv2.warpPerspective 函數來實現圖像矯正。以下是代碼示例:

import cv2
import numpy as np  def test001():img=cv2.imread("./opencv_work/src/3.png")h,w,c=img.shapepts1 = np.float32([[178, 100], [487, 134], [124, 267], [473, 308]])pts2 = np.float32([[0, 0], [w, 0], [0, h], [w, h]])m=cv2.getPerspectiveTransform(pts1,pts2)img2=cv2.warpPerspective(img,m,(w,h))cv2.imshow('img', img)cv2.imshow('img2', img2)cv2.waitKey(0)if __name__ == '__main__':test001()

3.3 應用場景

圖像矯正常用于文檔掃描、圖像校正以及增強現實等領域。例如,在文檔掃描中,可以通過圖像矯正將傾斜的文檔圖像調整為正視圖。

四、總結

本文介紹了圖像處理中的三種常見操作:鏡像旋轉、圖像縮放和圖像矯正。通過 OpenCV 提供的函數,我們可以輕松實現這些操作,并根據實際需求選擇合適的參數和方法。

  • 鏡像旋轉:通過 cv2.flip 函數實現水平、垂直或水平垂直翻轉。

  • 圖像縮放:通過 cv2.resize 函數實現圖像的縮放,并選擇合適的插值方法。

  • 圖像矯正:通過 cv2.getPerspectiveTransformcv2.warpPerspective 函數實現圖像的透視變換。

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

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

相關文章

「Java案例」猜數游戲

案例實現 猜數字游戲 設計一個三位數的猜數游戲,三位數隨機生成。程序提示用戶輸入一個三位的數字,依照以下的規則決定贏取多少獎金:1) 如果用戶輸入的數字和隨機數字完全一致,輸出:“恭喜恭喜!完全猜對了!獲得三個贊!”2) 如果用戶輸入的數字覆蓋了隨機生成的所有數…

創客匠人解析創始人 IP 內卷:知識變現時代的生存邏輯與破局路徑

當知識付費行業進入 “存量競爭” 階段&#xff0c;創始人 IP 的 “內卷” 已非選擇而是必然。創客匠人在服務數萬知識創業者的實踐中發現&#xff0c;那些實現逆勢增長的案例&#xff0c;其核心差異往往在于創始人是否具備 “從幕后走到臺前” 的決心與能力 —— 這種內卷并非…

250705-Debian12-sudo apt update加速+配置RDP遠程桌面環境+設置FRP服務為開機啟動項

A. 實現sudo apt update加速 在 Debian 12 上運行 sudo apt update 很慢的常見原因包括&#xff1a; &#x1f50d; 一、常見原因分析 使用了國外的軟件源 默認 Debian 安裝源多數是國際服務器&#xff0c;國內訪問會非常慢。 DNS 解析慢或失敗 軟件源地址解析時間長&#xf…

數學視頻動畫引擎Python庫 -- Manim Voiceover 語音服務 Speech Services

文中內容僅限技術學習與代碼實踐參考&#xff0c;市場存在不確定性&#xff0c;技術分析需謹慎驗證&#xff0c;不構成任何投資建議。 Manim Voiceover 是一個為 Manim 打造的專注于語音旁白的插件&#xff1a; 直接在 Python 中添加語音旁白&#xff1a; 無需使用視頻編輯器&…

C++11 forward_list 從基礎到精通:原理、實踐與性能優化

文章目錄一、為什么需要 forward_list&#xff1f;二、基礎篇&#xff1a;forward_list 的核心特性與接口2.1 數據結構與迭代器2.2 常用接口速覽2.3 基礎操作示例&#xff1a;從初始化到遍歷2.3.1 初始化與遍歷2.3.2 插入與刪除&#xff1a;before_begin 的關鍵作用三、進階篇&…

物聯網技術的核心組件與發展趨勢(截至2025年)

一、物聯網技術的核心組件物聯網&#xff08;IoT&#xff09;技術體系由感知層、網絡層、平臺層、應用層和安全層構成&#xff0c;各層技術協同工作&#xff0c;實現物理世界與數字世界的深度融合。1. 感知層&#xff1a;數據采集與交互傳感器技術&#xff1a;類型&#xff1a;…

面試中常見的問題:JavaScript 宏任務與微任務,包教包會

事件循環Event Loop 我們都知道&#xff0c;JavaScript 是一種單線程的編程語言&#xff0c;簡單的說就是&#xff1a;js只有一條通道&#xff0c;那么在任務多的情況下&#xff0c;就會出現擁擠的情況&#xff0c;這種情況下就產生了 ‘多線程’ &#xff0c;但是這種“多線程…

【LeetCode102.二叉樹的層序遍歷】vs.【LeetCode103.二叉樹的鋸齒形層序遍歷】

題目鏈接 LeetCode102.二叉樹的層序遍歷&#xff1a;102. 二叉樹的層序遍歷 - 力扣&#xff08;LeetCode&#xff09;LeetCode103.二叉樹的鋸齒形層序遍歷&#xff1a;103. 二叉樹的鋸齒形層序遍歷 - 力扣&#xff08;LeetCode&#xff09; 實現思路 定義一個隊列&#xff0…

Redis On-CPU Profiling定位瓶頸到可視化火焰圖

1 . 前置檢查&#xff1a;確認 CPU 真的是瓶頸 在正式打性能“補丁”前&#xff0c;務必跑一遍系統級健康核對表&#xff08;推薦 Brendan Greg 的 USE Method&#xff09;&#xff1a;資源關注指標常用工具CPUUtil/Idle、RunQueuetop、vmstat、sar內存Fault、Swap、Cache Miss…

未來趨勢:AI與量子計算對服務器安全的影響

隨著技術的飛速發展&#xff0c;人工智能&#xff08;AI&#xff09;和量子計算正在深刻改變信息技術的各個領域。特別是在服務器安全領域&#xff0c;這兩項技術既帶來了新的可能性&#xff0c;也帶來了前所未有的挑戰。本文將探討AI和量子計算技術對服務器安全的影響&#xf…

markdown學習筆記(個人向) Part.1

markdown學習筆記&#xff08;個人向&#xff09; Part.1 1. 推薦插件 markdown&#xff1a; 安裝支持markdown的插件&#xff1b; markdown-preview-github-styles&#xff1a; 可以將VS Code上默認的markdown預覽樣式修改成github上常用的形式&#xff0c;很大程度上提高文件…

ZooKeeper 實現分布式鎖

1. 分布式鎖概述 在分布式系統中&#xff0c;為了保證共享資源在并發訪問下的數據一致性&#xff0c;需要引入分布式鎖。分布式鎖是一種在分布式環境下控制多個進程對共享資源進行互斥訪問的機制。它與單機環境下的鎖&#xff08;如Java中的synchronized或Lock&#xff09;不同…

Linux線程——基礎全解

一、什么是線程&#xff08;Thread&#xff09;&#xff1f;? 定義&#xff1a;線程是程序執行的最小單位。即線程&#xff08;Thread&#xff09;是操作系統能夠進行運算調度的最小單位&#xff0c;它被包含在進程之中&#xff0c;是進程中的實際運作單位。一個進程可以并發多…

Java基礎--封裝+static

目錄 什么是封裝&#xff1f; 什么是訪問限定符&#xff1f; static靜態修飾符 用static修飾的類變量或類方法的注意事項&#xff1a; 什么是封裝&#xff1f; 封裝是面向對象的三大特性之一&#xff0c;指的是將一個類中的實現細節進行隱藏&#xff0c;對外只提供一些開放…

DAY 51 復習日

作業&#xff1a;day43的時候我們安排大家對自己找的數據集用簡單cnn訓練&#xff0c;現在可以嘗試下借助這幾天的知識來實現精度的進一步提高import torch import torch.nn as nn import torch.nn.functional as F import torchvision import torchvision.transforms as trans…

針對網絡爬蟲的相關法律法規整理

在中國&#xff0c;網絡爬蟲的法律法規涉及多個層面&#xff0c;包括個人信息保護、數據安全、網絡安全、知識產權、反不正當競爭等。以下是詳細的法律法規分析及合規指南&#xff1a; 1. 核心法律法規及適用場景? ??&#xff08;1&#xff09;《民法典》——隱私權與個人信…

1.1_5_2 計算機網絡的性能指標(下)

繼續來看計算機網絡的性能指標&#xff0c;接下來我們探討時延&#xff0c;時延帶寬積和往返時延&#xff0c;以及信道利用率這幾個性能指標。 首先來看時延這個性能指標&#xff0c;英文叫delay&#xff0c;也有的教材&#xff0c;把它翻譯為延遲。所謂的時延&#xff0c;就是…

PP-OCRv2:超輕OCR系統的萬能包

PP-OCRv2&#xff1a;超輕OCR系統的萬能包摘要光學字符識別&#xff08;OCR&#xff09;系統已廣泛應用于多種場景&#xff0c;但設計兼顧精度與效率的OCR系統仍具挑戰性。我們此前提出的超輕量OCR系統PP-OCR在平衡兩者方面取得進展。本文進一步提出PP-OCRv2&#xff0c;通過五…

常見的軟件版本開源協議

開源軟件許可證核心指南 一、許可證基礎分類 1. 寬松型許可證&#xff08;Permissive&#xff09; 核心特征&#xff1a;允許閉源衍生&#xff0c;僅保留版權聲明適用場景&#xff1a;商業集成、快速開發代表協議&#xff1a; &#x1f4dc; MIT &#x1f4dc; Apache 2.0 &…

基于FPGA的一維序列三次樣條插值算法verilog實現,包含testbench

目錄 1.前言 2.算法運行效果圖預覽 3.算法運行軟件版本 4.部分核心程序 5.算法仿真參數 6.算法理論概述 7.參考文獻 8.算法完整程序工程 1.前言 三次樣條插值是一種在數據擬合和信號處理中廣泛應用的技術&#xff0c;它通過構造分段三次多項式來逼近給定的離散數據點&a…