python-opencv图片变形、扩增区域等,手写数据集扩增。

有时候我们需要对图像进行一些操作,比如数据集扩增,变形啥的,本期介绍对图片增加外边框等操作。

比如我们现在有图片如下:

这个是280*32像素大小的文字,如果用这个数据集去训练模型的话,肯定限制死了文本,导致只能在这个数据集上检测手写数字,而对于多行检测出来再识别,会因为尺寸不一致,而导致训练的识别的效果特别差,所以我们要在训练的时候,就让文本的尺寸多样化。这样才能使得模型有更好的泛化能力。

代码如下:

import cv2
import os

files = os.listdir('./1')

for i in files:
    ss = './1/' + i
    img = cv2.imread(ss)
    img2 = cv2.copyMakeBorder(img,50,50,50,50, cv2.BORDER_CONSTANT,value=[0,255,0])
    cv2.imshow('img2',img2)
    cv2.waitKey(0)

 通过读取图片添加外边界,达到扩增效果。

但是我们的数据集肯定是白底黑字的,这样才有更好的识别效果,所以我们修改演示为白色,再加个随机random尺寸,就可以得到不同尺寸的图片了。 

import cv2
import os
import random
files = os.listdir('./1')

for i in files:
    ss = './1/' + i
    img = cv2.imread(ss)
    img2 = cv2.copyMakeBorder(img,random.randint(0,10),random.randint(0,10),random.randint(0,10),random.randint(1,5), cv2.BORDER_CONSTANT,value=[0,255,0])
    cv2.imshow('img2',img2)
    cv2.waitKey(0)

import cv2
import os
import random
files = os.listdir('./1')

for i in files:
    ss = './1/' + i
    img = cv2.imread(ss)
    img2 = cv2.copyMakeBorder(img,random.randint(0,10),random.randint(0,10),random.randint(0,10),random.randint(1,5), cv2.BORDER_CONSTANT,value=[255,255,255])
    cv2.imshow('img2',img2)
    cv2.waitKey(0)

猜你喜欢

转载自blog.csdn.net/qq_34904125/article/details/123755867