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的图像预处 ...
随机推荐
- NIPS 2018 | 程序翻译新突破:UC伯克利提出树到树的程序翻译神经网络
NIPS 2018 | 程序翻译新突破:UC伯克利提出树到树的程序翻译神经网络 机器之心 已认证的官方帐号 49 人赞同了该文章 选自arXiv,作者:Xinyun Chen.Chang Liu. ...
- C#获取Excel表格所有sheet名(Epplus)
原文:C#获取Excel表格所有sheet名(Epplus) 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog. ...
- 可视化利器 TensorBoard
人工智能的黑盒: TensorBoard 的作用: 1.用TensorFlow保存图的信息到日志中 tfsummary.FileWriter("日志保存路径", sess.grap ...
- SIP协议参数详解
1.1 SIP消息分类 SIP协议是以层协议的形式组成的,就是说它的行为是以一套相对独立的处理阶段来描述的,每个阶段之间的关系不是很密切. SIP协议将Server和User Agent之间的通讯的 ...
- js之拖拽事件
js之拖拽事件 api:https://www.runoob.com/jsref/event-ondrag.html 拖拽事件是js原生的事件,使用时在div上添加 draggable="t ...
- 前端html转pdf
转 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&q ...
- Java 之 Hashtable 集合
Hashtable 集合 java.util.Hashtable<K,V>集合 implements Map<K,V>接口 Hashtable:底层也是一个哈希表,是一个线 ...
- Go 缓冲信道
缓冲信道 语法结构:cap为容量 ch := make(chan type, cap) 缓冲信道支持len()和cap(). 只能向缓冲信道发送容量以内的数据. 只能接收缓冲信道长度以内的数据. 缓冲 ...
- 封装promise
// new 做了什么 //1.创建一个新的空对象 //2.将构造函数中的this指向这个新空对象 //3.执行构造函数中的代码 //4.返回这个对象 //5.这个对象有一个__proto__指向构造 ...
- 当跨域时,js ajax 请求出现options请求
上面有文章说过http的options. 查了很久.试了很多版本的jQuery,下面这段代码在同事的机子上测试是没有问题的.正常 的请求, 一在我机子上面就会出现option,网上说先向服务器预检等. ...