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的图像预处 ...
随机推荐
- 阿里云kubernetes集群被xmrig挖矿程序入侵
原因是由于Kubernetes Apiserver不安全配置所致,Apiserver提供了资源操作的唯一入口,并提供认证.授权.访问控制.API注册和发现等机制,所以apiserver的安全至关重要. ...
- 103 保序回归 isotonic regression
103 保序回归 isotonic regression 2016-03-30 11:25:27 bea_tree 阅读数 6895 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权 ...
- 时间格式_java
@Test public void testDate(){ Date date=new Date(); System.out.println(date); /*日期格式*/ DateFormat df ...
- delete删除数据造成归档日志增加,操作系统空间不足导致数据库hang住
业务需求,对日志表历史数据进行清理.历史表均很大,使用delete 操作删除90天前的数据. 第一部分:快速删除数据 SQL> alter table CC.F_LOG parallel ; S ...
- 怎样手写一个Object.create()方法
Object.create()会将参数对象作为一个新创建的空对象的原型, 并返回这个空对象, 基于这个功能, 就有了下面这个Object.create()的手动实现: function _create ...
- AngularJS视图 ng-view
AngularJS支持通过在单个页面上的多个视图的单页应用.要做到这一点AngularJS提供ng-view 和 ng-template指令,以及 $routeProvider 服务. ng-view ...
- CSS一些常用样式
限制行数溢出省略号 display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: ; overflow: hidden ...
- C#projectPropertyGrid 显示结构(展开逗号分隔)
[TypeConverter(typeof(ExpandableObjectConverter))] public A MyA { get{..} set{..} }
- [NOIP2018模拟赛10.22]咕咕报告
闲扯 这是篇咕咕了的博客 考场上码完暴力后不知道干什么,然后忽然发现这个T1好像有点像一道雅礼集训时讲过的CF题目 Rest In Shades ,当时那道题还想了挺久不过思路比较妙,于是我就也\(y ...
- vue 钩子函数的初接触
vue-router的路由钩子函数: 第一种:全局钩子函数. router.beforeEach((to, from, next) => { console.log('beforeEach') ...