【圖像分類】理論篇 (4)圖像增強opencv實現

隨機旋轉

隨機旋轉是一種圖像增強技術,它通過將圖像以隨機角度進行旋轉來增加數據的多樣性,從而幫助改善模型的魯棒性和泛化能力。這在訓練深度學習模型時尤其有用,可以使模型更好地適應各種角度的輸入。

原圖像:

旋轉后的圖像:

?代碼實現:

import cv2import numpy as npdef random_rotate(image, max_angle):angle = np.random.uniform(-max_angle, max_angle)height, width = image.shape[:2]rotation_matrix = cv2.getRotationMatrix2D((width / 2, height / 2), angle, 1)rotated_image = cv2.warpAffine(image, rotation_matrix, (width, height))return rotated_image# 讀取圖像
image = cv2.imread('input.jpg')
image=cv2.resize(image,(1024,800))
# 隨機旋轉圖像
max_rotation_angle = 30 ?# 最大旋轉角度
rotated_image = random_rotate(image, max_rotation_angle)# 顯示原始圖像和旋轉后的圖像
cv2.imshow('Original Image', image)
cv2.imshow('Rotated Image', rotated_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

隨機裁剪

隨機裁剪是一種常見的數據增強技術,用于增加訓練數據的多樣性,特別是在處理不同尺寸的圖像數據時。

原圖像:

隨機裁剪后的圖像:

?代碼實現:

import cv2
import numpy as np
def random_crop(image, crop_size):height, width = image.shape[:2]crop_height, crop_width = crop_sizeif crop_width >= width or crop_height >= height:raise ValueError("Crop size should be smaller than image size")x = np.random.randint(0, width - crop_width + 1)y = np.random.randint(0, height - crop_height + 1)cropped_image = image[y:y+crop_height, x:x+crop_width]return cropped_image# 讀取圖像
image = cv2.imread('input.jpg')
image=cv2.resize(image,(1024,800))
# 隨機裁剪到固定大小
crop_size = (200, 200) ?# 裁剪尺寸
cropped_image = random_crop(image, crop_size)# 顯示原始圖像和裁剪后的圖像
cv2.imshow('Original Image', image)
cv2.imshow('Cropped Image', cropped_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

顏色增強

  • 顏色平衡調整:調整圖像中不同顏色通道的增益,以改變圖像的顏色平衡。
  • 顏色增強:通過增加或減少顏色通道的值,增強圖像的色彩鮮艷度。

原圖像:

?亮度調整之后的圖像:

?代碼實現:

def enhance_color(image, alpha, beta):enhanced_image = cv2.convertScaleAbs(image, alpha=alpha, beta=beta)return enhanced_imageimage = cv2.imread('input.jpg')
color_enhanced_image = enhance_color(image, 1.2, 20)

亮度和對比度調整

  • 亮度調整:改變圖像的亮度水平,使圖像變得更亮或更暗。
  • 對比度調整:調整圖像中像素值的范圍,以擴展或縮小亮度差異,使圖像更具視覺對比度。

原圖:

?

?亮度、對比度調整后的圖像:

代碼實現:

import cv2def adjust_brightness_contrast(image, alpha, beta):adjusted_image = cv2.convertScaleAbs(image, alpha=alpha, beta=beta)return adjusted_imageimage = cv2.imread('input.jpg')
brightened_image = adjust_brightness_contrast(image, 1.2, 20)

圖像平滑與銳化

  • 圖像平滑:應用模糊濾波器來減少圖像中的噪聲,同時也可能使圖像變得模糊。
  • 圖像銳化:通過增強圖像中的邊緣和細節,使圖像看起來更清晰。

?原圖:

平滑后的圖像:

?銳化后的圖像:

代碼實現:

def apply_image_smoothing(image):smoothed_image = cv2.GaussianBlur(image, (5, 5), 0)return smoothed_imagedef apply_image_sharpening(image):kernel = np.array([[-1, -1, -1],[-1,  9, -1],[-1, -1, -1]])sharpened_image = cv2.filter2D(image, -1, kernel)return sharpened_imageimage = cv2.imread('input.jpg')
smoothed_image = apply_image_smoothing(image)
sharpened_image = apply_image_sharpening(image)

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

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

相關文章

1.MySQL數據庫的基本操作

數據庫操作過程: 1.用戶在客戶端輸入 SQL 2.客戶端會把 SQL 通過網絡發送給服務器 3.服務器執行這個 SQL,把結果返回給客戶端 4.客戶端收到結果,顯示到界面上 數據庫的操作 這里的數據庫不是代表一個軟件,而是代表一個數據集合。 顯示當前的數據庫 …

Python中的MetaPathFinder

MetaPathFinder 是 Python 導入系統中的一個關鍵組件,它與 sys.meta_path 列表緊密相關。sys.meta_path 是一個包含 MetaPathFinder 實例的列表,這些實例用于自定義模塊的查找和加載邏輯。當使用 import 語句嘗試導入一個模塊時,Python 會遍歷…

Golang通過alibabaCanal訂閱MySQLbinlog

最近在做redis和MySQL的緩存一致性,一個方式是訂閱MySQL的BinLog文件,我們使用阿里巴巴的Canal的中間件來做。 Canal是服務端和客戶端兩部分構成,我們需要先啟動Canal的服務端,然后在Go程序里面連接Canal服務端,即可監…

Maven - 統一構建規范:Maven 插件管理最佳實踐

文章目錄 Available Plugins開源項目中的使用插件介紹maven-jar-pluginmaven-assembly-pluginmaven-shade-pluginShade 插件 - 標簽artifactSetrelocationsfilters 完整配置 Available Plugins https://maven.apache.org/plugins/index.html Maven 是一個開源的軟件構建工具&…

零食量販店熱潮:小縣城的新零售革命

零食量販店熱潮:小縣城的新零售革命 目錄 引言零食量販店的快速崛起零食量販店的運營模式量販零食店在小縣城的影響技術在零食量販店的應用未來展望結論 1. 引言 近年來,零食量販店在我國小縣城迅速發展,成為一種新型的零售模式。在一條街…

flutter 二進制轉字符串

通常接口返回的數據都是二進制數據 二進制轉字符串:utf8二進制轉字符串 onRoomMsg.body是二進制編碼 utf8.decode(onRoomMsg.body)然后字符串轉對象 json.decode(utf8.decode(onRoomMsg.body))然后再用fromJson解析 PrankActivityModel prankActivityModel Prank…

新疆大學841軟件工程考研

1.軟件生產的發展經歷了三個階段,分別是____、程序系統時代和軟件工程時代時代。 2.可行性研究從以下三個方面研究每種解決方法的可行性:經濟可行性、社會可行性和_____。 3.HIPO圖的H圖用于描述軟件的層次關系&…

Android 12.0 系統systemui下拉通知欄的通知布局相關源碼分析

1.前言 在android12.0的系統rom開發中,在進行systemui中的下拉通知欄的布局自定義的時候,對于原生systemui的 系統的下拉通知欄的通知布局的了解也是非常重要的,接下來就來分析下相關的下拉通知欄的通知布局的相關 源碼流程,了解這些才方便對通知欄的布局做修改 2.系統sy…

創建maven的Springboot項目出現錯誤:Cannot access alimaven

創建maven的Springboot項目出現錯誤:Cannot access alimaven 1)問題2) 分析問題3)解決問題 1)問題 創建maven的Springboot項目出現錯誤: Cannot access alimaven (http://maven.aliyun.com/nexus/content/groups/p…

“深入探索JVM內部機制:解密Java虛擬機的工作原理“

標題:深入探索JVM內部機制:解密Java虛擬機的工作原理 摘要:本文將深入探索Java虛擬機(JVM)的內部機制,解密其工作原理。我們將介紹JVM的基本組成部分、類加載過程、內存管理和垃圾回收、即時編譯器等關鍵概…

Linux C++ 網絡編程基礎(2) : TCP多線程一個server對應多個client

目錄 一、linux posix線程相關函數介紹二、tcp server基礎版本三、tpc服務端多線程版本四、tpc客戶端代碼tcp編程時, 一個server可以對應多個client, server端用多線程可以實現. linux下多線程可以使用POSIX的線程函數, 下面給出服務端和客戶端的代碼. 一、linux posix線程相關…

RocketMQ 單機源碼部署 自定義配置文件和端口以及acl權限配置解析

思路 1、我們首先配置完 namesrv和broker和acl認證的配置文件,然后直接使用-c指定配置文件來啟動程序,就會非常明了,用戶名密碼要大于6,第一個用戶我測試著不知道為什么始終有最高權限,大家盡量不要吧第一個用戶給別人…

Redis輔助功能

一、Redis隊列 1.1、訂閱 subscribe ch1 ch2 1.2 publish:發布消息 publish channel message 1.3 unsubscribe: 退訂 channel 1.4 模式匹配 psubscribe ch* 模糊發布&#xff0c;訂閱&#xff0c;退訂&#xff0c; p* <channelName> 1.5 發布訂閱原理 訂閱某個頻道或…

05-基礎入門-系統及數據庫等

基礎入門-系統及數據庫等 一、操作系統層面1、識別操作系統常見方法2、簡要兩者區別及識別意義3、操作系統層面漏洞類型對應意義4、簡要操作系統層面漏洞影響范圍 二、數據庫層面1、識別數據庫類型常見方法2、數據庫類型區別及識別意義3、數據庫常見漏洞類型及攻擊4、簡要數據庫…

word在頁眉頁腳添加第幾頁

如果直接在頁腳添加數字&#xff0c;整個文檔的頁腳會是統一的。 這里我們需要的是每一頁按照頁碼排布的文檔&#xff0c;所以首先打開頁腳設置&#xff1a; 在插入內選擇頁腳 在彈出的下拉窗口中選擇空白即可 在菜單欄會多出“頁眉和頁腳”的選項卡&#xff0c;選擇其中的頁…

【CTFshow】——PWN簽到題

文章目錄 一【題目環境】二【題目類別】三【題目編號】四【題目描述】五【解題思路】六【解題過程】七【提交結果】 一【題目環境】 名稱版本Ubuntu系統22.04.1 LTSLinux內核5.15.0-43-generic 二【題目類別】 此題無特殊類別&#xff0c;為入門題 三【題目編號】 PWN簽到…

數字孿生:Three.js(WebGL)和虛擬引擎

一、先說總結 總的來說&#xff0c;選擇Three.js和WebGL還是虛擬引擎&#xff0c;主要取決于你的項目需求和優先級。 如果你的數字孿生項目主要是為了Web展示&#xff0c;需要快速加載&#xff0c;且對3D效果和物理模擬的需求不高&#xff0c;那么Three.js是一個非常好的選擇。…

gstreamer rtsp server 在ubuntu系統上的安裝

gstreamer rtsp server 在ubuntu系統上的安裝 本篇博客介紹gstreamer rtsp server在ubuntu系統上的安裝 python python直接使用pip安裝 sudo apt install gir1.2-gst-rtsp-server-1.0C 安裝 下載源碼 git clone https://github.com/GStreamer/gst-rtsp-server.git進入倉…

supOS APP開發者課程練習冊創建服務(命名:getPropertiesHistory)

創建服務&#xff08;命名&#xff1a;getPropertiesHistory&#xff09;,調用getPropertiesHistory()服務&#xff0c;獲取“催化裂化一車間”對象的“重質餾分油_進”最近5分鐘內的歷史值&#xff0c;每一分鐘取一個值&#xff0c;開始時間和結束時間需要調用時間格式化功能集…

【2022吳恩達機器學習課程視頻翻譯筆記】3.3代價函數公式

忙了一陣子&#xff0c;回來繼續更新 3.3 代價函數公式 In order to implement linear regression. The first key step is first to define something called a cost function. This is something we’ll build in this video, and the cost function will tell us how well…