【图像分类】理论篇 (4)图像增强opencv实现

随机旋转

随机旋转是一种图像增强技术,它通过将图像以随机角度进行旋转来增加数据的多样性,从而帮助改善模型的鲁棒性和泛化能力。这在训练深度学习模型时尤其有用,可以使模型更好地适应各种角度的输入。

原图像:

旋转后的图像:

 代码实现:

import cv2

import numpy as np

def 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_size
    if 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_image

image = cv2.imread('input.jpg')
color_enhanced_image = enhance_color(image, 1.2, 20)

亮度和对比度调整

  • 亮度调整:改变图像的亮度水平,使图像变得更亮或更暗。
  • 对比度调整:调整图像中像素值的范围,以扩展或缩小亮度差异,使图像更具视觉对比度。

原图:

 

 亮度、对比度调整后的图像:

代码实现:

import cv2

def adjust_brightness_contrast(image, alpha, beta):
    adjusted_image = cv2.convertScaleAbs(image, alpha=alpha, beta=beta)
    return adjusted_image

image = 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_image

def 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_image

image = cv2.imread('input.jpg')
smoothed_image = apply_image_smoothing(image)
sharpened_image = apply_image_sharpening(image)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/74803.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

恒运资本:CPO概念发力走高,兆龙互联涨超10%,华是科技再创新高

CPO概念15日盘中发力走高,截至发稿,华是科技涨超15%再创新高,兆龙互联涨逾11%,中贝通讯涨停,永鼎股份、太辰光涨超5%,天孚通讯涨逾4%。 消息面上,光通讯闻名咨询机构LightCounting近日发布的202…

【LeetCode】《LeetCode 101》第十一章:妙用数据结构

文章目录 11.1 C STL11.2 数组448. 找到所有数组中消失的数字(简单)48. 旋转图像(中等)74. 搜索二维矩阵(中等)240. 搜索二维矩阵 II(中等)769. 最多能完成排序的块(中等…

ChatGPT or BingChat

你相信我们对大模型也存在「迷信权威」吗? ChatGPT 的 GPT-4 名声在外,我们就不自觉地更相信它,优先使用它。但我用 ChatALL 比较 AI 大模型们这么久,得到的结论是: ChatGPT GPT-4 在大多数情况下确实是最强&#xf…

Element组件浅尝辄止4:Button组件

Button按钮组件&#xff1a;用途太广泛了&#xff0c;几乎参与到了日常开发中的方方面面 1.如何使用&#xff1f;How? //使用type、plain、round和circle属性来定义 Button 的样式。<el-row><el-button>默认按钮</el-button><el-button type"primar…

阿里云ACP知识点

前言&#xff1a;记录ACP错题 1、在创建阿里云ECS时&#xff0c;每台服务器必须要包含_______用来存储操作系统和核心配置。 系统盘&#xff08;不是实例&#xff0c;实例是一个虚拟的计算环境&#xff0c;由CPU、内存、系统盘和运行的操作系统组成&#xff1b;ESC实例作为云…

【RabbitMQ与SpringBoot集成测试收发消息】

【RabbitMQ与SpringBoot集成测试收发消息】 一、环境说明二、实验步骤三、小结 一、环境说明 安装环境&#xff1a;虚拟机VMWare Centos7.6 Maven3.6.3 JDK1.8RabbitMQ版本&#xff1a;rabbitmq-server-3.8.8-1.el7.noarch.rpm编程工具Idea 运行JDK为17 二、实验步骤 在Rab…

九州未来参与编制的开源领域3项团体标准获批发布

日前&#xff0c;中电标2023年第21号团体标准公告正式发布&#xff0c;其中由九州未来参与编制的3项开源领域团体标准正式获批发布&#xff0c;于2023年8月1日正式实施。 具体内容如下&#xff1a; 《T/CESA 1269-2023 信息技术 开源 术语与综述》&#xff0c;本文件界定了信息…

AWK +iptables+shell实战脚本案例

目录 一、在Centos下安装httpd 查看安装是否成功 重启httpd 查看80端口是否开放 在主机上查询 查看防火墙 在浏览器中查询主机IP地址 查看日志是否生成 二、AWK iptablesshell实战脚本案例 1、封堵扫描器 (1) 开始扫描器 特别注意&#xff1a;在Vim中尽量不要使用空格…

python_PyQt5运行股票研究python方法工具V1.2_增加折线图控件

承接【python_PyQt5运行股票研究python方法工具V1.1_增加表格展示控件】 地址&#xff1a;python_PyQt5运行股票研究python方法工具V1.1_增加表格展示控件_程序猿与金融与科技的博客-CSDN博客 目录 结果展示&#xff1a; 代码&#xff1a; 示例py文件代码&#xff08;低位股…

ubuntu 安装 cuda

ubuntu 安装 cuda 初环境与设备在官网找安装方式 本篇文章将介绍ubuntu 安装 CUDA Toolkit CUDA Toolkit 是由 NVIDIA&#xff08;英伟达&#xff09;公司开发的一个软件工具包&#xff0c;用于支持并优化 GPU&#xff08;图形处理器&#xff09;上的并行计算和高性能计算。它…

mysql的安装

首先双击mysql的安装包 双击安装包之后就会出现下面这种情况&#xff1b; 然后就会出现下面这个页面 选择developer default开发者模式&#xff0c;然后点击next 然后再点击next 再点击yes 点击excute&#xff0c;点击完之后需要稍等几分钟才能完成 上一步安装好之后点击n…

EthGlobal 巴黎站 Chainlink 获奖项目介绍

在 Web3 中&#xff0c;每一周都至关重要。项目的发布、版本的发布以及协议的更新以惊人的速度推出。开发者必须保持学习&#xff0c;随时了解最新的工具&#xff0c;并将所有他们所学的东西&#xff08;无论是旧的还是新的&#xff09;联系起来&#xff0c;以构建推动 Web3 技…

电脑垃圾清理怎么做?记住这5个方法!

“我的电脑用了快一年了吧&#xff01;现在感觉电脑里很多垃圾文件&#xff0c;但又害怕在删除这些垃圾文件时会将一些重要的文件一起删除掉。所以不敢对电脑进行清理。想问下大家平常有没有好用方法去清理电脑呀&#xff1f;感谢&#xff01;” 随着电脑使用时间的推移&#x…

AD23使用笔记

1. 如何修改原理图的页面 2. 原理图DRC&#xff1a;快捷键T D ; 或者&#xff1a;菜单→工程→validate pcb project,,,,,,,,, Altium Designer原理图错误编译检查_ad原理图如何编译和查错_y惘然__的博客-CSDN博客 3.

开源数据库Mysql_DBA运维实战 (DML/DQL语句)

DML/DQL DML INSERT 实现数据的 插入 实例&#xff1a; DELETE 实现数据的 删除 实例&#xff1a; UPDATE 实现数据的 更新 实例1&#xff1a; 实例2&#xff1a; 实例3&#xff1a; DQL DML/DQL DML语句 数据库操纵语言&#xff1a; 插入数据INSERT、删除数据DELE…

掌握Python的X篇_33_MATLAB的替代组合NumPy+SciPy+Matplotlib

numPy 通常与 SciPy( Scientific Python )和 Matplotlib (绘图库)一起使用&#xff0c;这种组合广泛用于替代 MatLab&#xff0c;是一个强大的科学计算环境&#xff0c;有助于我们通过 Python 学习数据科学或者机器学习。 文章目录 1. numpy1.1 numpy简介1.2 矩阵类型的nparra…

SQL | 分组数据

10-分组数据 两个新的select子句&#xff1a;group by子句和having子句。 10.1-数据分组 上面我们学到了&#xff0c;使用SQL中的聚集函数可以汇总数据&#xff0c;这样&#xff0c;我们就能够对行进行计数&#xff0c;计算和&#xff0c;计算平均数。 目前为止&#xff0c…

【JavaWeb】实训的长篇笔记(上)

JavaWeb的实训是学校的一门课程&#xff0c;老师先讲解一些基础知识&#xff0c;然后让我们自己开发一个比较简单的Web程序。可涉及的知识何其之多&#xff0c;不是实训课的 3 周时间可以讲得完的&#xff0c;只是快速带过。他说&#xff1a;重点是Web开发的流程。 我的实训草草…

神经网络分类算法原理详解

目录 神经网络分类算法原理详解 神经网络工作流程 反向传播算法 1) 反向传播原理 2) 应用示例 总结 正向传播 &#xff08;forward-propagation&#xff09;&#xff1a;指对神经网络沿着输入层到输出层的顺序&#xff0c;依次计算并存储模型的中间变量。 反向传播 &a…

UE4拾取物品高亮显示

UE4系列文章目录 文章目录 UE4系列文章目录前言一、如何实现 前言 先看下效果&#xff0c;当角色靠近背包然后看向背包&#xff0c;背包就会高亮显示。 一、如何实现 1.为选中物品创建蓝图接口 在“内容” 窗口中&#xff0c;鼠标右键选择“蓝图”->蓝图接口&#xff0c…
最新文章