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)

还有一些图像处理函数 以后更新

时间: 2024-10-02 02:27:51

python+opencv 图像预处理的相关文章

python opencv图像阈值处理

######################################################### 学习函数 cv2.threshold, cv2.adaptiveThreshold等等 简单阈值: 原理很直接,如果像素值大于一个阈值,那么久将它赋值一个数,否则赋值成另外一个数.函数使用cv2.threshold 第一参数是原图像,而且这个图像应该是一个灰度图像.第二个参数用来区分像素的阈值.第三个参数是像素值大于阈值时的上限.opencv提供了不同样式的阈值并且由第四个参数决定

【AI基础】python:openCV——图像算术运算(2):按位运算

按位运算 按位操作有:AND,OR,NOT,XOR 等.当我们提取图像的 一部分,选择非矩形 ROI 时这些操作会很有用,常用于Logo 投射. 本节操作思路:通过 threshold 函数将图片 固定阈值二值化,定义:图像的二值化,就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的只有黑和白的视觉效果.一幅图像包括目标物体.背景还有噪声,要想从多值的数字图像中直接提取出目标物体,常用的方法就是设定一个阈值T,用T将图像的数据分成两部分:大于T的像素群和小于T的像素群.这

python+OpenCV 图像滤波

输入图像为添加椒盐噪声的图像 img=cv2.imread('noise.jpg') img=PepperandSalt(img,0.2) # 均值滤波 img_mean = cv2.blur(img, (5,5)) # 高斯滤波 img_Guassian = cv2.GaussianBlur(img,(5,5),0) # 中值滤波 img_median = cv2.medianBlur(img, 5) # 双边滤波 img_bilater = cv2.bilateralFilter(img,9

python+opencv实现机器视觉基础技术(边缘提取,图像滤波,边缘检测算子,投影,车牌字符分割)

目录 一:边缘提取 1.对图像进行阈值分割并反色 2.边缘提取 二:图像滤波 1.读取原图 2.均值滤波 3.中值滤波 4.高斯滤波 5.高斯边缘检测 三:边缘检测算子 1.显示原图 2.对图像进行反色 3.对图像用sobel方法进行边缘检测 4.对图像用robert方法进行边缘检测 四:投影 1.显示原图 2.垂直方向投影 3.水平方向投影 五:车牌字符分割 1.读取原图 2.灰度转换 3.反色 4.阈值分割 5.投影 6.字符识别匹配分割 ??机器视觉是人工智能正在快速发展的一个分支.简单说

.NET + OpenCV &amp; Python + OpenCV 配置

最近需要做一个图像识别的GUI应用,权衡了Opencv+ 1)QT,2)Python GUI,3).NET后选择了.NET... 本文给出C#+Opencv和Python+Opencv的相应参考,节省大家时间. (一)C#.NET + Opencv 1)下载并安装Emgu库(for opencv on .NET env) Download @ http://sourceforge.net/projects/emgucv/ 2)How to use opencv on C#? VS上配置Emgu(

Opencv 图像读取与保存问题

本系列文章由 @yhl_leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/49737357 本文仅对 Opencv图像读取与保存进行阐述,重在探讨图像读取与保存过程中应注意的细节问题. 1 图像读取 首先看一下,imread函数的声明: // C++: Mat based Mat imread(const string& filename, int flags=1 ); // C: IplImage based

Python+OpenCV图像处理(一)——读取显示一张图片

配置好所有环境后,开始利用python+opencv进行图像处理第一步. 读取和显示一张图片: import cv2 as cv src=cv.imread('E:\imageload\example.png') cv.namedWindow('input_image', cv.WINDOW_AUTOSIZE) cv.imshow('input_image', src) cv.waitKey(0) cv.destroyAllWindows() 输出效果: 代码解释: src=cv.imread(

基于python+opencv的人脸检测+

人脸检测分为两种:一种是基于知识的,一种是基于深度学习的.深度不会学习 人脸识别属于目标检测,主要涉及两个方面: ①先对检测的物体进行概率统计,从而知道待检测对象的一些特征,建立其目标的检测模型 ②用得到的模型来匹配输入的图像,如果有匹配则则输出匹配的区域,否则什么也不做. 我们看到的图片和计算机不一样,计算机看到的是一串串数字矩阵,图片由多个像素组成,拿我们熟悉的RGB图像来说,每个像素又有红绿蓝三个通道,假如每个像素的单个通道由uint8类型字符组成,那么三通道的像素便会有24位,这是我们常

Python+opencv+pyaudio实现带声音屏幕录制

原文链接:https://blog.csdn.net/zhaoyun_zzz/article/details/84341801 Python+opencv+pyaudio实现带声音屏幕录制原创luke-skyworker 发布于2018-11-28 23:05:23 阅读数 3463 收藏展开文章目录声音录制视频录制(无声音)录制的音频与视频合成为带声音的视频 基于个人的爱好和现实的需求,决定用Python做一个屏幕录制的脚本.因为要看一些加密的视频,每次都要登录,特别麻烦,遂决定用自己写的脚本