一 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 图像预处理的更多相关文章

  1. [opencv]图像预处理方案及方式

    像识别中,图像质量的好坏直接影响识别算法的设计与效果精度,那么除了能在算法上的优化外,预处理技术在整个项目中占有很重要的因素,然而人们往往忽略这一点. 图像预处理,将每一个文字图像分检出来交给识别模块 ...

  2. Python OpenCV 图像相识度对比

    强大的openCV能做什么我就不啰嗦,你能想到的一切图像+视频处理. 这里,我们说说openCV的图像相似度对比, 嗯,说好听一点那叫图像识别,但严格讲, 图像识别是在一个图片中进行类聚处理,比如图片 ...

  3. 基于Python & Opencv 图像-视频-处理算法

    Alg1:图像数据格式之间相互转换.png to .jpg(其他的请举一反三) import cv2 import glob def png2jpg(): images = glob.glob('*. ...

  4. python Opencv图像基础操作

    读取并显示图像 如果读取图像首先要导入OpenCV包,方法为: import cv2 读取并显示图像 img = cv2.imread("C:\test1.jpg") OpenCV ...

  5. Python中图像的缩放 resize()函数的应用

    cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) -> dst 参数说明: src - 原图 dst - 目标图像.当参数ds ...

  6. 基于OpenCV的火焰检测(一)——图像预处理

    博主最近在做一个基于OpenCV的火焰检测的项目,不仅可以检测图片中的火焰,还可以检测视频中的火焰,最后在视频检测的基础上推广到摄像头实时检测.在做这个项目的时候,博主参考了很多相关的文献,用了很多种 ...

  7. Python + opencv 实现图片文字的分割

    实现步骤: 1.通过水平投影对图形进行水平分割,获取每一行的图像: 2.通过垂直投影对分割的每一行图像进行垂直分割,最终确定每一个字符的坐标位置,分割出每一个字符: 先简单介绍一下投影法:分别在水平和 ...

  8. python+opencv实现车牌定位

    写在前面 HIT大三上学期视听觉信号处理课程中视觉部分的实验三,经过和学长们实验的对比发现每一级实验要求都不一样,因此这里标明了是2019年秋季学期的视觉实验三. 由于时间紧张,代码没有进行任何优化, ...

  9. Caffe2 图像预处理(Image Pre-Processing)[6]

    学习如何使得图像符合预训练模型的需求,或者用其他数据集的图像来测试自己的模型. - 调整大小 - 缩放 - HWC和CHW,数据通道交换 - RGB和BGR,颜色通道的交换 - Caffe2的图像预处 ...

随机推荐

  1. CSPS2019游记

    Day1: T1:格雷码?看一眼感觉是结论题,但是没头绪推不出来,硬刚40min想到$\oplus$切了. 但是没写unsigned挂了五分... T2:全场爆切人均50的题,就我一个写挂了35pts ...

  2. 【微信网页直接下载app】微信跳转-微信浏览器中直接唤起本地浏览器和App

    文档传送门:https://github.com/EthanOrange/wechat-redirect demo: http://wxredirect.jslab.fun/call-app

  3. graph Laplacian 拉普拉斯矩阵

    转自:https://www.kechuang.org/t/84022?page=0&highlight=859356,感谢分享! 在机器学习.多维信号处理等领域,凡涉及到图论的地方,相信小伙 ...

  4. Linux命令——w、who、whoami、lastlog、last

    参考:Linux w Command Tutorial for Beginners (5 Examples) Linux who Command Tutorial for Beginners (8 E ...

  5. powerlink的Windows-DEMO生成笔记

    资料准备: 1.Visual studio 2010 2.Cmake 3.Powerlink 2.7.1源码 具体下载请到相关页面去获取. 新版的powerlink分为两个部分: 1.协议栈 2.应用 ...

  6. C++语法备忘

    记录一些C++的语法方便日后查看. 1.C++初始化语法 C++中新增加了两种初始化语法,其中大括号初始化器需要C++11以上的实现,使用时可以加等号,也可以不加,而且大括号中可以不包含任何东西,这种 ...

  7. tensorflow实战笔记(18)----textCNN

    一.import 包 import os import pandas as pd import csv import time import datetime import numpy as np i ...

  8. 剑指Offer的学习笔记(C#篇)-- 翻转单词的序列

    题目描述 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上.同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思.例如,“student ...

  9. WPF多值绑定及多值转换(MultiBinding和IMultiValueConverter)

    WPF可以使用MultiBinding进行多值绑定,使用IMultiValueConverter进行多值转换 例: (1)转换器 public class ContentConverter : IMu ...

  10. Lua 学习之基础篇三<Lua 字符串操作>

    Lua字符串可以使用以下三种方式表示: 单引号间的一串字符. 双引号间的一串字符. [[和]]间的一串字符. string = [["Lua"]] print("字符串 ...