图像数据旋转+翻转

海思3559平台移植二维码解码库zbar 1. 下载并解压 zbar 源码包: http://zbar.sourceforge.net/download.html zbar-0.10.tar.bz2 解压缩: tar -xvjf zbar-0.10.tar.bz2 2. 编译过程 ./configure –prefix=/home/lie/3559_V30_KK_SY/references/thirdparty/zbar... 阅读详情

旋转(VOC格式)

代码:

import cv2
import math
import numpy as np
import os
import glob
import json
import shutil
import xml.etree.ElementTree as ET
from xml.etree.ElementTree import ElementTree, Element

def getRotatedImg(Pi_angle,img_path,img_write_path):
    img = cv2.imread(img_path)
    rows, cols = img.shape[:2]
    a, b = cols / 2, rows / 2
    M = cv2.getRotationMatrix2D((a, b), angle, 1)
    rotated_img = cv2.warpAffine(img, M, (cols, rows))  # 旋转后的图像保持大小不变
    cv2.imwrite(img_write_path,rotated_img)
    return a,b

def getRotatedAnno(Pi_angle,a,b,anno_path,anno_write_path):
    tree = ET.parse(anno_path)
    root = tree.getroot()
    objects = root.findall("object")
    for obj in objects:
        bbox = obj.find('bndbox')
        x1 = float(bbox.find('xmin').text) - 1
        y1 = float(bbox.find('ymin').text) - 1
        x2 = float(bbox.find('xmax').text) - 1
        y2 = float(bbox.find('ymax').text) - 1

        x3=x1
        y3=y2
        x4=x2
        y4=y1

        X1 = (x1 - a) * math.cos(Pi_angle) - (y1 - b) * math.sin(Pi_angle) + a
        Y1 = (x1 - a) * math.sin(Pi_angle) + (y1 - b) * math.cos(Pi_angle) + b

        X2 = (x2 - a) * math.cos(Pi_angle) - (y2 - b) * math.sin(Pi_angle) + a
        Y2 = (x2 - a) * math.sin(Pi_angle) + (y2 - b) * math.cos(Pi_angle) + b

        X3 = (x3 - a) * math.cos(Pi_angle) - (y3 - b) * math.sin(Pi_angle) + a
        Y3 = (x3 - a) * math.sin(Pi_angle) + (y3 - b) * math.cos(Pi_angle) + b

        X4 = (x4 - a) * math.cos(Pi_angle) - (y4 - b) * math.sin(Pi_angle) + a
        Y4 = (x4 - a) * math.sin(Pi_angle) + (y4 - b) * math.cos(Pi_angle) + b

        X_MIN=min(X1,X2,X3,X4)
        X_MAX = max(X1, X2, X3, X4)
        Y_MIN = min(Y1, Y2, Y3, Y4)
        Y_MAX = max(Y1, Y2, Y3, Y4)

        bbox.find('xmin').text=str(int(X_MIN))
        bbox.find('ymin').text=str(int(Y_MIN))
        bbox.find('xmax').text=str(int(X_MAX))
        bbox.find('ymax').text=str(int(Y_MAX))

    tree.write(anno_write_path)  # 保存修改后的XML文件

def rotate(angle,img_dir,anno_dir,img_write_dir,anno_write_dir):
    if not os.path.exists(img_write_dir):
        os.makedirs(img_write_dir)

    if not os.path.exists(anno_write_dir):
        os.makedirs(anno_write_dir)

    Pi_angle = -angle * math.pi / 180.0  # 弧度制,后面旋转坐标需要用到,注意负号!!!
    img_names=os.listdir(img_dir)
    for img_name in img_names:
        img_path=os.path.join(img_dir,img_name)
        img_write_path=os.path.join(img_write_dir,img_name[:-4]+'R'+str(angle)+'.jpg')
        #
        anno_path=os.path.join(anno_dir,img_name[:-4]+'.xml')
        anno_write_path = os.path.join(anno_write_dir, img_name[:-4]+'R'+str(angle)+'.xml')
        #
        a,b=getRotatedImg(Pi_angle,img_path,img_write_path)
        getRotatedAnno(Pi_angle,a,b,anno_path,anno_write_path)


# 旋转角度
angle = 1
# 原始图片地址
img_dir = r'C:\Users\Swag-cc\Desktop\graduate\VOCdevkit-1\VOC2007\JPEGImages'
# 原始标签地址
anno_dir = r'C:\Users\Swag-cc\Desktop\graduate\VOCdevkit-1\VOC2007\Annotations'
# 旋转后图片地址
img_write_dir = r'C:\Users\Swag-cc\Desktop\graduate\VOCdevkit-1\VOC2007\new_images'
# 旋转后标签地址
anno_write_dir = r'C:\Users\Swag-cc\Desktop\graduate\VOCdevkit-1\VOC2007\new_annotations'

rotate(angle, img_dir, anno_dir, img_write_dir, anno_write_dir)

翻转


from PIL import Image
import os
import os.path

# rootdir = r'D:\用户目录\我的图片\From Yun\背景图\背景图'  # 指明被遍历的文件夹
rootdir = r'C:\Users\Swag-cc\Desktop\graduate\VOCdevkit-1\VOC2007\new_images'

for parent, dirnames, filenames in os.walk(rootdir):  # 遍历图片
    for filename in filenames:
        print('parent is :' + parent)
        print('filename is :' + filename)
        currentPath = os.path.join(parent, filename)
        print('the fulll name of the file is :' + currentPath)

        im = Image.open(currentPath)
        out = im.transpose(Image.FLIP_LEFT_RIGHT)  # 实现翻转
        # newname=r"D:\用户目录\我的图片\From Yun\背景图\背景图反转"+'\\'+filename+"(1).jpg"
        newname = r"C:\Users\Swag-cc\Desktop\graduate\VOCdevkit-1\VOC2007\new_images\transpose" + '\\' + filename + '_new'+'.jpg'  # 重新命名
        out.save(newname)  # 保存结束
        # im = Image.open(r'C:\Users\Administrator\Desktop\新建文件夹 (2)\1.jpg')
        # out = im.transpose(Image.FLIP_LEFT_RIGHT)
        # out.save(r'C:\Users\Administrator\Desktop\新建文件夹 (2)\test2.jpg')

数据集增强——图像翻转、旋转、随机颜色、对比度、亮度、颜色增强 机器学习/深度学习所需数据增强解决图像数据集数量过少问题 阅读详情

相关推荐

基于深度学习的目标检测:数据增强(一)图像翻转、图像旋转、图像放缩

1.数据增强简介 数据增强(data augmentation),又名数据增广或数据扩充,其本质是通过使用图像处理方法,基于有限的数据产生更多的数据,以此增加训练样本的数量以及多样性,进而提升模型的泛化能力和鲁棒性。 本篇主要涉及到的知识点有: 数据增强的定义:明晰数据增强技术的原理及其在深度学习中的意义。 数据增强的方法:学会使用图像处理方法实现对于数据集中的样本扩充。 图像源扩充方法:学会通过与训练或扩充图像源的方式实现训练数据增强。 说明:数据增强的对象是已有的训练样

星智云图工作室(StarImagine Studio) 1万+

ZBar源码分析(五)

2021SC@SDUSC 目录 一、image头文件分析 二、image源文件分析 1.zbar_image_create函数分析 2._zbar_image_free函数分析 3.一系列get、set函数 一、image头文件分析 typedef enum zbar_format_group_e { ZBAR_FMT_GRAY, ZBAR_FMT_YUV_PLANAR, ZBAR_FMT_YUV_PACKED, ZBAR_FMT_RGB_PACKED,

sdu_DYL的博客 1367

深度学习数据增强方法-内含(亮度增强、对比度增强、旋转图像、翻转图像、仿射变化扩充图像、错切变化扩充图像、HSV数据增强、平移扩充)8种方式进行增强-每种扩充一张实现8倍扩)+ 图像缩放代码-批量

在进行深度学习训练的时候,我们往往会面临数据集不够的情况,需要进行数据集的扩充,数据集的扩充有多种多样的方式,在这里总结了8种数据扩充的方法对数据进行数据增强,包括:亮度增强,对比度增强,翻转图像,仿射变化扩充图像,错切变化扩充图像,HSV数据增强7种方法对数据进行增强。 前四种方式很好理解,仿射变化和错切变化的原理请参考: 数据增广:旋转,缩放,平移以及错切_太阳花的小绿豆的博客-优快云博客 HSV数据增强的方法请参考: HSV模型简介以及利用HSV模型随机增强图像_太阳花的小绿...

爱吃橘子的小翟 2万+

Zbar二维码解析库编译

环境: Win7 + MinGW 默认的Zbar for windows 中的DLL在windows不能支持中文,需要修改源码,然后重新编译,没有VS的工程,编译过程相当纠结。 1. 首先先安装 MinGW ,安装过程不详述,比较简单。 2. 将zbar源码放入到 msys/1.0/proj/下,默认路径为: C:\MinGW\msys\1.0\ ,proj是新建的目录。ming

Angelo Lee's Blog 1万+

Zbar-0.10 中文支持源码

已经编译好的支持中文解析的 Zbar 源码,基于zbar-0.10。

利用Langchain生成合成数据的实践指南

合成数据是相对于从真实世界事件中收集的数据而言的人工生成的数据。它用于模拟真实数据,同时避免隐私泄露或遇到真实数据中的局限性。:尽管合成数据有诸多优点,但应谨慎使用,因为它可能无法捕捉真实世界的复杂性。

eahba的博客 398

嵌入式使用Zbar解析二维码

引言 上篇文章介绍了使用Quirc解析二维码,Quirc是一个轻量级的二维码解析库,效率太低,不符合使用条件,作者使用Zbar来进行二维码的解析。Zbar算法是现在网上开源的条形码,二维码检测算法,这几种算法的对比主要看这一篇文章,文章表明Zbar的效率远高于Quirc,经过作者的实验,Zbar在作者的嵌入式门禁中解析一张二维码仅需要500ms,远高于Quirc,以后在进行二维码实验时,推荐使用Zbar进行解析。Zbar支持多种语言,本文使用C语言进行开发。 使用方法 下图为从官网下载下来的完整的Zbar库

qq_30623327的博客 3930

GitLab教程(四):分支(branch)和合并(merge)

命令进行合并时,Git具备一定的智能自动化处理能力:如果一个分支仅修改了文件A,而另一个分支独立地修改了文件B,Git能够无缝整合这些更改,自动完成合并过程——即最终的代码既包含了对A文件的修改也包含了对B文件的修改。同样地,若两个分支虽然都修改了同一个文件,但涉及的是文件中互不重叠的部分,比如一个改动发生在第一行,另一个则在第二行,Git同样能巧妙地自动合并这些非冲突性修改。获取了远程分支的最新变化,或者当你想要合并本地的一个分支到当前分支时,就会用到这个命令。,默认会尝试合并远程分支到当前分支。

TracyCoder的博客 7889

医学图像进行数据增强(翻转、旋转)的方法和结果总结

医学图像进行数据增强(翻转、旋转)的方法总结 使用深度学习执行图像分类任务时往往因为数据量不平衡或者数据量不足,需要进行数据增强,数据增强包括平移、旋转、裁剪、拉伸、缩放、水平翻转、垂直翻转、水平垂直、加噪声等等。而对于乳腺超声图像数据来说,拉伸、裁剪等操作会改变图像的形状信息,因此我使用水平翻转和旋转的方法进行数据扩充。 一、水平翻转 两种方法:分别是利用Opencv的DataAugment()函数、 PIL中的Image 1 Opencv方法: 代码: ''' Python批量实现图像镜像翻转 函数:D

jinzi_a的博客 1万+

innovus中path group 的策略和应用(上)

在所有的后端工具里边,有三个重要的引擎:auto-place,CTS,auto-route三个。这里边的auto-place是决断了整个设计时序的基点。。当然,就算是到了CTS/route阶段后,也可以继续利用auto-place数据优化的功能,在数据库上做数据路径增量优化(optDesign -increment)。可以说,数据路径的优化手段,实际上是贯穿在整个后端流程上的。。看看这其中的奥妙和有趣的事情。ICer GO!

i_chip_backend的博客 4220

GAMES101:MacOS作业环境搭建

查看gcc/clang的位置产看gcc/clang的版本1.1.2 安装cmake。

weixin_38844255的博客 717

数据增强处理(图像平移,缩放,翻转,旋转,加噪,亮度调节)

数据增强处理 图像的平移,缩放,翻转,旋转,加噪,亮度调节 # -*- coding: utf-8 -*- """ # 数据增强实现 """ import cv2 import numpy as np # 图像平移 def img_translation(image): # 图像平移 下、上、右、左平移 M = np.float32([[1, 0, 0], [0, 1, 100...

conan的博客 5463

【系统分析师】2025年下半年真题:案例分析-答案及详解(回忆版)

Redis相比Memcached在电商高并发场景下具有显著优势:支持持久化(RDB/AOF)、丰富数据结构(如有序集合实现排行榜)、原生支持集群和哨兵模式(高可用性)。布隆过滤器通过位数组和哈希函数预先存储所有合法订单ID,当查询请求到达时快速拦截无效ID(如伪造ID),避免其穿透缓存直接冲击数据库,从而预防缓存击穿问题。

数据知道的博客 5998

深度学习数据增强方法,利用仿射变换实现图像进行各种操作如平移、缩放、旋转、翻转

导读 在图像处理中,我们经常需要对图像进行各种操作如平移、缩放、旋转、翻转等,这些其实都是图像的仿射变换。通过本篇文章,你能够知道它们的实现原理以及如何应用它们。 仿射变换 仿射变换也称仿射投影,是指几何中,对一个向量空间进行线性变换并接上一个平移,变换为另一个向量空间。所以,仿射变换其实也就是在讲如何来进行两个向量空间的变换 假设有一个向量空间k: k=(x,y)k=(x,y)k=(x,y) 还有一个向量空间j: j=(x′,y′)j=(x',y' )j=(x′,y′) 如果我们想要将向量空间由k变为j,

zhuguiqin1的专栏 1万+

寄存器与计数器设计(Verilog)

always @(posedge Reset or posedge Clock)//请在括号中补充敏感信号列表。always @(negedge Resetn , posedge Clock)//请在括号中补充敏感信号列表。always @(negedge Resetn,posedge Clock)//请在括号中补充敏感信号列表。//为了便于自动评测,请勿更改n的值。//为了便于自动评测,请勿更改n的值。//为了便于自动评测,请勿更改n的值。//为了便于自动评测,请勿更改n的值。

M_inherit的博客 366

「深度学习之优化算法」笔记(二)优化算法的分类

但是由于生物的局限性,人们所创造出的算法也会有局限性:我们所熟知的生物都生存在三维空间,在这些环境中,影响生物生存的条件比较有限,反应到算法中就是这些算法在解决较低维度的问题时效果很好,当遇到超高维(维度>500)问题时,结果可能不容乐观,没做过实验,我也不敢乱说。当然,他们的目的不是在最佳狩猎位置集合,他们的目的是在过去的途中看是否能发现更加好的狩猎位置,去往已经到过的狩猎地点再次狩猎是没有意义的,因为每个位置获取食物的难易程度是固定的。如果他们的策略是“不跟随最优解”,那么他们的策略是什么呢?

quanzhan_King的博客 1374

数据增强(图像)高斯噪声、亮度、翻转、旋转45° Python【可直接用的代码!!!】

数据增强(图像)高斯噪声、翻转、旋转45° python【可直接用的代码!!!】 复制代码后,修改一下文件路径即可一键批量对图像进行数据增强! 我的文件路径结构是: root 花 图片1 图片2 鱼 图片1 图片2 猫 图片1 图片2 import cv2 import os import numpy as np ''' 1. 水平垂直翻转 2. 高斯噪声 3. 45°旋转 4. 昏暗 ''' # 添加高斯噪声 def gaussia

weixin_51391591的博客 4851

基于 STM32 与压电薄膜的婴儿睡眠呼吸暂停监测床垫设计

本设计以 STM32F103C8T6 为主控,结合 PVDF 压电薄膜传感器,通过模拟信号调理与数字峰值检测算法,实现了对婴儿睡眠呼吸状态的实时监测。系统结构简单、成本低廉、无接触无束缚,当检测到 20 秒以上无呼吸信号时自动触发声光报警,可有效降低婴儿睡眠呼吸暂停带来的安全风险。后续可扩展蓝牙 / WiFi 模块,将报警信息推送至家长手机端,实现远程监护。

weixin_42300449的博客 154

图像数据增强Deep Learning with Python:旋转缩放与翻转终极指南

在深度学习项目中,图像数据增强是提升模型泛化能力的关键技术!特别是在小数据集场景下,通过旋转、缩放、翻转等变换技术,我们可以从有限的数据中创造出无限多样的训练样本,有效防止过拟合现象。Deep Learning with Python项目提供了完整的图像数据增强实现方案,让初学者也能快速掌握这一强大工具。🚀 ## 为什么需要图像数据增强? **数据增强的核心价值**在于解决训练数据不足的问题

gitblog_00567的博客 705

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

JAVA学习-练习试用Java实现“数据增强:对图像数据集进行旋转、翻转等操作生成新样本”

本文介绍了使用Java进行图像数据增强的方法,主要涉及图像的旋转和翻转操作。文章推荐使用Java Advanced Imaging(JAI)库,并提供了Maven依赖配置。通过示例代码演示了如何读取图像、执行90度旋转和水平翻转操作,并保存处理后的图像。核心方法包括使用AffineTransformOp实现旋转和翻转变换。作者指出可根据需求调整旋转角度和翻转方向,并建议修改方法以实现更复杂的功能。文章末尾声明内容为学习总结,欢迎指正错误。

weixin_69763181的博客 244

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

【数据增强】添加缩小、水平翻转、旋转、增加图像噪声和增亮功能

参加了“智蔗见智·向新而生”广西第二届人工智能大赛,但是他给的数据集只有不到100张,对于语义分割模型的训练来说实在是杯水车薪,我们队的处理方案是:先按照十字架方式裁剪图片,之后再进行3个角度的翻转,一系列数据增强的操作了数据集的数量是原来的4*4=16倍,已经可以满足模型的训练要求!而本文正是记录旋转这个数据增强的方式。

向往有那么一天梦幻的步态识别落地,开花❀! 2284

使用python脚本对labelme标注的数据集与相应的图像分别进行左右、上下镜面翻转与90°、180°、270°旋转以扩充数据集

使用labelme手动进行左右、上下镜面翻转与90°、180°、270°旋转以扩充数据集的方式过于费精力,并且效率低下,期间也参考了许多大佬的代码,但是在我电脑上的运行效果不佳,因此通过ChatGPT代写了一段代码,运行成功,我的原图为长方形,没有出现90°和270°旋转标签偏移的情况,供大家使用。输入目录需要包含JPG与对应的JSON文件,如下图所示。这个代码只需要更改结尾的输入输出目录。

m0_69841323的博客 946

Pytroch torchvision 数据增强 翻转 旋转

文章目录0 数据增强简介1 使用的例子2 增强方式2.1 水平翻转和竖直翻转2.2 旋转参考文章 0 数据增强简介 数据增强常常用来扩充数据,在一定程度上可以缓解数据不足所带来模型训练程度不足的问题,对于少量数据进行数据增强,再训练模型,可以增强模型 数据增强的方式:通常在训练中使用而不在测试中使用,并且在训练中常常使用随机的方式生成 数据增强的使用:通常根据应用场景进行数据增强。比如有些数据在光线有大量变化的场景中应用,需要对图片数据进行光照上的增强;有些数据在形状上有变化,比如伪装物体的检测

今晚看星星的博客 3758

python图像旋转、翻转8种数据增强

python实现常用的旋转 + 翻转 等8种数据增强

Daisy_D99的博客 1841

图像旋转翻转变换

描述 给定m行n列的图像各像素点灰度值,对其依次进行一系列操作后,求最终图像。 其中,可能的操作及对应字符有如下四种: A:顺时针旋转90度; B:逆时针旋转90度; C:左右翻转; D:上下翻转。 输入 第一行包含两个正整数m和n,表示图像的行数和列数,中间用单个空格隔开。1 <= m <= 100, 1 <= n <= 100。 接下来m行,每行n个整数,表示图像中每个...

lzx's blog 2202
上一篇: 创建django项目(笔记)
下一篇: Vim日常使用
Andy in boots
博客等级 码龄7年 73粉丝 69原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值