python+opencv 图像预处理
一 python 生成随机字符串序列+ 写入到图片上
from PIL import Image,ImageDraw,ImageFont
import numpy as np
import random
import string
import cv2
# 生成随机字符串
for i in range(1,10000):
strnum = random.randint(2,10)
ran_str = "".join(random.sample(string.ascii_letters + string.digits, strnum))
font = ImageFont.truetype('D:\Multimedia\RosewoodStd-Regular.otf', 60) # otf和ttf 是都可以使用。
image = Image.new("RGB", (300, 200), (255, 255, 255))
draw = ImageDraw.Draw(image)
if strnum <=5:
# 参数一 写入位置 参数二 文本 参数三 字体格式 fill 为文本颜色 默认为白色
draw.text((80, 80), ran_str, font=font, fill='Black')
else:
draw.text((20, 80), ran_str, font=font, fill='Black')
path = "D:\AdobeVFR_release\\rosewood"+"\\rosewood_regular_"+str(i)+".jpeg"
image.save(path)
if(i%10==0):
print("has already save %d images"%i)
疑问: 写到图片上的文本,怎么可以调整文本间间距 (论文模型需要)
二 使用cv2 一些图像预处理函数
import cv2
from skimage import data_dir,io,color
import numpy as np
import random
sigma = random.uniform(2.5,3.5)
# 高斯噪声函数,这里写的是按像素点单个处理,可以建一个高斯随机数的矩阵
def GaussianNoise (img ,means =0,sigma =1.5):
r = img[:,:,0].flatten()
g = img[:,:,1].flatten()
b = img[:,:,2].flatten()
for i in range(img.shape[0]*img.shape[1]):
r[i] = r[i]+random.gauss(0,sigma)
g[i] = g[i]+random.gauss(0,sigma)
b[i] = b[i]+random.gauss(0,sigma)
img[:,:,0] = r.reshape([img.shape[0],img.shape[1]])
img[:,:,1] = r.reshape([img.shape[0],img.shape[1]])
img[:,:,2] = r.reshape([img.shape[0],img.shape[1]])
return img
# 几何变化函数,主要功能是扭曲
def Geometric_changes(image,width,height):
pts1 = np.float32([[50, 50], [200, 50], [50, 200]])
x = random.randint(50,100)
y = random.randint(200,250)
z = random.randint(10,50)
pts2 = np.float32([[z, x], [200, 50], [x, y]])
M = cv2.getAffineTransform(pts1, pts2)
image_0 = cv2.warpAffine(image, M, (width, height))
return image_0
path ='D:\AdobeVFR_release\sythetic'
string = path+'/*.jpeg'
”“”
io.ImageCollrction 将图片路径整理成一个list
”“”
coll = io.ImageCollection(string)
a = np.array(coll) for i in range(95,len(a)):
height = a[i].shape[0]
width = a[i].shape[1]
image_0 = GaussianNoise(a[i])
image_0 = cv2.GaussianBlur(image_0,(5,5),sigma) # 高斯模糊
image_0 = Geometric_changes(image_0, width, height)
# 缩放函数,fx,fy为缩放因子 interpolation有五种,
#INTER_AREA 基于局部像素的重采样 图像缩小时候,该方法可以避免波纹
#INTER_NEAREST 最近邻插值法 适合放大
#INTER_LINEAR 双线性插值法 默认
#INTER_CUBIC 基于4x4像素邻域的3次插值法 适合放大
#INTER_LANCZOS4 - 基于8x8像素邻域的Lanczos插值
image_0 = cv2.resize(image_0, None, fx=random.uniform(5 / 6, 7 / 6), fy=1, interpolation=cv2.INTER_AREA)
path = "D:\AdobeVFR_release\sydata"+"\d"+str(i)+".jpeg"
cv2.imwrite(path, image_0)
if(i%10==0):
print("has already %d image" % i)
还有一些图像处理函数 以后更新
python+opencv 图像预处理的更多相关文章
- [opencv]图像预处理方案及方式
像识别中,图像质量的好坏直接影响识别算法的设计与效果精度,那么除了能在算法上的优化外,预处理技术在整个项目中占有很重要的因素,然而人们往往忽略这一点. 图像预处理,将每一个文字图像分检出来交给识别模块 ...
- Python OpenCV 图像相识度对比
强大的openCV能做什么我就不啰嗦,你能想到的一切图像+视频处理. 这里,我们说说openCV的图像相似度对比, 嗯,说好听一点那叫图像识别,但严格讲, 图像识别是在一个图片中进行类聚处理,比如图片 ...
- 基于Python & Opencv 图像-视频-处理算法
Alg1:图像数据格式之间相互转换.png to .jpg(其他的请举一反三) import cv2 import glob def png2jpg(): images = glob.glob('*. ...
- python Opencv图像基础操作
读取并显示图像 如果读取图像首先要导入OpenCV包,方法为: import cv2 读取并显示图像 img = cv2.imread("C:\test1.jpg") OpenCV ...
- Python中图像的缩放 resize()函数的应用
cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) -> dst 参数说明: src - 原图 dst - 目标图像.当参数ds ...
- 基于OpenCV的火焰检测(一)——图像预处理
博主最近在做一个基于OpenCV的火焰检测的项目,不仅可以检测图片中的火焰,还可以检测视频中的火焰,最后在视频检测的基础上推广到摄像头实时检测.在做这个项目的时候,博主参考了很多相关的文献,用了很多种 ...
- Python + opencv 实现图片文字的分割
实现步骤: 1.通过水平投影对图形进行水平分割,获取每一行的图像: 2.通过垂直投影对分割的每一行图像进行垂直分割,最终确定每一个字符的坐标位置,分割出每一个字符: 先简单介绍一下投影法:分别在水平和 ...
- python+opencv实现车牌定位
写在前面 HIT大三上学期视听觉信号处理课程中视觉部分的实验三,经过和学长们实验的对比发现每一级实验要求都不一样,因此这里标明了是2019年秋季学期的视觉实验三. 由于时间紧张,代码没有进行任何优化, ...
- Caffe2 图像预处理(Image Pre-Processing)[6]
学习如何使得图像符合预训练模型的需求,或者用其他数据集的图像来测试自己的模型. - 调整大小 - 缩放 - HWC和CHW,数据通道交换 - RGB和BGR,颜色通道的交换 - Caffe2的图像预处 ...
随机推荐
- 使用paypal-php-sdk开发php国际支付
参考:https://github.com/paypal/PayPal-PHP-SDK/wiki https://blog.csdn.net/markely/article/details/79044 ...
- 线段树 面积并问题 hdu 1255 1542
重点整理面积并的思想 以及PushUp的及时更新 还有就是cover的实现 以及建树每个节点存的信息(每个节点存的是一个线段的信息) http://www.tuicool.com/articles/6 ...
- (八)Struts标签基础(一)
一.Struts标签分类 二.标签的使用 2.1 标签的主题 主题的设置与struts.xml中的常量<constant name="struts.ui.theme" val ...
- IDEA如何本机调试springboot应用打的jar包
背景: 我用命名行 执行 java -jar ***.jar发现 springboot启动时抛出错误,因此想debug进去看看究竟为什么出错. 1 在命令行执行 java -jar -Xdebug ...
- 如何在含有json类型的字段上建立多列索引
废话不多,直接上图 如 : 表结构如图 那么我想在这三个字段上建立一个唯一索引,目的是为了防止重复插入数据, 1.首先,说明一下 data中的json中,key为 tagID 和 ...
- vue-cli搭建vue项目环境
该篇文章是继https://www.cnblogs.com/qing-5/p/11321585.html来写 1.打开终端,输入指令"npm install --global vue-cli ...
- CAS客户端认证流程
CAS登陆流程 Step 1:浏览器向CAS客户端发起登陆请求,CAS客户端生成“登陆URL”,并把浏览器重定向到该URL 登陆URL: https://${cas-server-host}:${ca ...
- docker alpine wkhtmltopdf
截止2019.08 wkhtmltopdf 还没有 alpine 的版本 如需使用 需要在 alpine 环境中编译 生成 wkhtmltopdf (使用 apk add wkhtmltopdf ...
- Centos 升级至 OpenSSH 8 rpm包制作
背景 安全部门扫描系统漏洞,OpenSSH 7.9出现漏洞,需升级到8. 使用 rpmbuild 将源码包编译为 rpm包. yum install rpm-build zlib-devel open ...
- 特殊权限 - SUID GUID STICKYBIT
◆ SUID ( Set User ID ) Linux里,用户的ID被称作UID.在实际生产中,可能需要临时借用别的用户执行程序,因此需要能够临时变更自己UID的机能叫做SUID.借助SUID权限, ...