灰度化

灰度即R=G=B 二值化只取255 0
对图片进行灰度化处理,目的是 1 减少数据量 (减少不明显) 2 为二值化准备
对数据进行灰度发现数据量减少并不明显 尤其是 最大 和 平均 灰度法 权重法数据量减少明显 但是权重不容易处理(权重需要自己去调整到自己想要的)

python 二值化代码

1. 使用cv2方法(注意cv2读取图片是BGR通道,保存的图片时单通道)

def gray_cv(img):img2 = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  # 图片灰度化,使用BGR转换灰度。效果稍微好点plt.imshow(img2)plt.show()cv2.imwrite("gray_cv", img2)img3 = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)  # RGB转换为灰度plt.imshow(img3)plt.show()

2. 最大值二值化(全三个通道中最大的值 R=B=G=max)

def gray_max(img):gray_max_rgb_image = img.copy()  # 复制图像,用于后面保存灰度化后的图像bgr值矩阵img_shape = img.shape  # 返回一位数组(高,宽,3)获得原始图像的长宽以及颜色通道数,一般彩色的颜色通道为3,黑白为1for i in range(img_shape[0]):  # 按行读取图片的像素bgrfor j in range(img_shape[1]):  # 对每一行按照列进行每一个像素格子进行读取gray_max_rgb_image[i, j] = max(img[i, j][0], img[i, j][1], img[i, j][2])  # 求max灰度值print(gray_max_rgb_image)cv2.imwrite("gray_max1.jpg", gray_max_rgb_image)  # 保存图片plt.imshow(gray_max_rgb_image)plt.show()

3. 平均值灰度化(求三个通道平均值 R=G=B=avg)

def gray_avg(img):gray_avg_rgb_image = img.copy()  # 复制图像,用于后面保存灰度化后的图像bgr值矩阵img_shape = img.shape  # 返回一位数组(高,宽,3)获得原始图像的长宽以及颜色通道数,一般彩色的颜色通道为3,黑白为1for i in range(img_shape[0]):  # 按行读取图片的像素bgrfor j in range(img_shape[1]):  # 对每一行按照列进行每一个像素格子进行读取gray_avg_rgb_image[i, j] = (int(img[i,j][0])+int(img[i,j][1])+int(img[i,j][2]))/3 # 求平均灰度值print(gray_avg_rgb_image)cv2.imwrite("gray_avg1.jpg", gray_avg_rgb_image)plt.imshow(gray_avg_rgb_image)plt.show()

4. 权重法平均值(跟选取权重有关,权重不一定通用)

def gray_weight(img):   # 参数没有调好,不好调,图像大小减小多# wr, wg, wb = 0.11, 0.59, 0.11wr, wg, wb =  0.299, 0.587, 0.114gray_weightmean_rgb_image = img.copy()  # 复制图像,用于后面保存灰度化后的图像bgr值矩阵img_shape = img.shape  # 返回一位数组(高,宽,3)获得原始图像的长宽以及颜色通道数,一般彩色的颜色通道为3,黑白为1for i in range(img_shape[0]):  # 按行读取图片的像素bgrfor j in range(img_shape[1]):  # 对每一行按照列进行每一个像素格子进行读取gray_weightmean_rgb_image[i, j] = (int(wr*img[i,j][2])+int(wg*img[i,j][1])+int(wb*img[i,j][0])) / 3  # 求设置RBG不同权重灰度值print(gray_weightmean_rgb_image)cv2.imwrite("gray_weight1.jpg", gray_weightmean_rgb_image)plt.imshow(gray_weightmean_rgb_image)plt.show()

去噪(高斯滤波 双边滤波(避免边缘模糊))推荐视频,讲解去噪

1噪点产生原因:

1 图片获取过程中:由于受传感器材料属性、工作环境、电子元器件和电路结构等影响,会引入各种噪声,如电阻引
起的热噪声、场效应管的沟道热噪声、光子噪声、暗电流噪声、光响应非均匀性噪声。

2 信号传输过程中:由于传输介质和记录设备等的不完善,数字图像在其传输记录过程中往往会受到多种噪声的污染。另外,在图像处理的某些环节当输入的对象并不如预想时也会在结果图像中引入噪声。

2双边滤波(双边滤波器可以很好地减少不需要的噪声,同时保持边缘相当清晰。然而,它是与大多数过滤器相比非常慢。)

def bi_fillter(img):time1 = time.time()dst1 = cv2.bilateralFilter(src=gray_img, d=0, sigmaColor=15, sigmaSpace=20)cv2.imwrite("bi_img.jpg", dst1)  # 图片大小100*50 效果更好。plt.imshow(dst1)plt.show()time2 = time.time()print("gray_bi",time2-time1)return dst1

二值化(只有0或255)

全零 是黑色 全255 白色,自己设置一个阀门,把大于阀门数的设为255,否则为0

def erzhihua(img):gray_max_rgb_image = bi_img.copy()  # 复制图像,用于后面保存灰度化后的图像bgr值矩阵bi_img_shape = bi_img.shape  # 返回一位数组(高,宽,3)获得原始图像的长宽以及颜色通道数,一般彩色的颜色通道为3,黑白为1for i in range(bi_img_shape[0]):  # 按行读取图片的像素bgrfor j in range(bi_img_shape[1]):  # 对每一行按照列进行每一个像素格子进行读取rgb_max = max(bi_img[i, j][0], bi_img[i, j][1], bi_img[i, j][2])  # 求最大灰度化的基础进行二值化if rgb_max > 76:  #  可以通过调试,查看变量方法,设置阀值gray_max_rgb_image[i, j] = 255else:gray_max_rgb_image[i, j] = 0plt.imshow(gray_max_rgb_image)return gray_max_rgb_image

字符分隔

字符分隔的三种方法:基于边缘轮廓的字符分隔(常用) 基于投影阀值的字符分隔 基于神经网络聚类的字符分隔
(1)垂直投影分割法:把二值图像在垂直以及水平方向上进行投影,从而形成了二值统计图像,从而确定字符位置。使用此方法不仅程序设计要求较为简单,而且分割速度快。但是分割方法过于固定,区域多为方形。

(2)聚类分析分割法:把字符通过形态学方式构成连通域,再与已知特征相结合完成字符分割。使用此种方法能够在汉字字符不连通的情况下也能完成分割任务,但是这种方法不仅计算复杂,且效率不高。

(3)轮廓提取分割法:首先需要对二值图像进行边缘检测计算,然后根据字符的边界将字符框选并分割出来,使用此种方法分割出来的字符边缘非常准确,但是与聚类分析的分割方法相似,具有计算量大,计算速度慢的缺点。

垂直投影法:对应车牌变形的效果不太好,而且图片质量越高,投影效果越好

def touyin2(img):paintx = np.zeros(img.shape)h, w = img.shape[0], img.shape[1]a = [0 for i in range(w)]for j in range(0, w):  # 遍历一行for i in range(0, h):  # 遍历列if img[i, j][0] == 0:  # 如果改点为黑点a[j] += 1  # 该列的计数器加一计数  相对于计算某列的白像素for j in range(0, w):  # 遍历每一列for i in range(a[j]):  # 从该列应该变黑的最顶部的点开始向最底部涂黑paintx[i, j] = 255  # 涂黑plt.imshow(paintx)plt.show()

车牌识别之预处理(灰度化,去噪,二值化,分割)相关推荐

  1. java图像处理:灰度化,二值化,降噪,切割,裁剪,识别,找相似等

    前段时间做爬虫,涉及到对图片验证码的破解,这里罗列一些常用的图像处理方法,都很简单并没用到什么复杂的算法,所以不涉及opencv,都是一些直接对rgb像素点的操作,很简单也很好理解,至于识别直接用的t ...

  2. 数字识别java开源_Java基于opencv实现图像数字识别(三)—灰度化和二值化

    Java基于opencv实现图像数字识别(三)-灰度化和二值化 一.灰度化 灰度化:在RGB模型中,如果R=G=B时,则彩色表示灰度颜色,其中R=G=B的值叫灰度值:因此,灰度图像每个像素点只需一个字 ...

  3. (二)对图像进行预处理(灰度化,二值化)

    对图像进行预处理(灰度化,二值化) 一.图像灰度化处理 图像灰度化是指每个像素只有一个采样颜色的图像,这类图像通常显示为从最暗黑色到最亮的白色的灰度. 灰度图像与黑白图像不同,在计算机图像领域中黑白图 ...

  4. 图像预处理-灰度化、二值化(Python)

    图像预处理-灰度化.二值化 1. 图像灰度化.二值化--2021 Texas州暴雪 1.1 图像灰度化 1.2 图像二值化 2. 图像灰度化.二值化结果--Jp社会 3. 一点点坐井观天的思考 1. ...

  5. bmp图片灰度化和二值化

    C语言去除bmp图片的背景 一.前言 二.灰度化 头文件 C文件 三.二值化 一.前言 图像处理中,大部分的处理方法都需要事先把彩色图转换成灰度图才能进行相关的计算.识别. 彩色图转换灰度图的原理如下 ...

  6. 小白入门计算机视觉(二) : 图像基本处理----灰度图和二值化

    文章目录 解剖图像 图像处理基本原理 RGB模型 灰度 二值化 图像失真问题 从本节开始,我就要正式踏上小白的计算机视觉探索之路,先从图像基础学习吧 解剖图像 要学会图像处理首先就得知道图像的结构,平 ...

  7. 图像的色彩类别,灰度化,二值化

    灰度化:在RGB模型中,如果R=G=B时,则彩色表示一种灰度颜色,其中R=G=B的值叫灰度值,因此,灰度图像每个像素只需一个字节存放灰度值(又称强度值.亮度值),灰度范围为0-255.一般常用的是加权 ...

  8. opencv入门课程:彩色图像灰度化和二值化(采用skimage库和opencv库两种方法)

    用最简单的办法实现彩色图像灰度化和二值化: 首先采用skimage库(skimage库现在在scikit_image库中)实现: from skimage.color import rgb2gray ...

  9. C语言数字图像处理---1.2 彩色图像灰度化和二值化

    本篇主要讲述32位彩色图像的灰度化和二值化内容. [彩色图像灰度化] 1.定义 在上一节中,我们介绍了8位单色灰度图,它使用0-255来表示一个像素,但在实际使用中,我们最常用的还是彩色图像灰度化.对 ...

  10. 实例说明图像的灰度化和二值化的区别

    转载出处:https://blog.csdn.net/haluoluo211/article/details/52797527 首先我们还是得了解一下定义(搬运工): 灰度化:在RGB模型中,如果R= ...

最新文章

  1. DSAPI多功能组件编程应用-DS提示气泡
  2. [Linux学习]Linux下进程通讯之共享内存
  3. 8. String to Integer (atoi)
  4. MySql like 查询 变向写法(不用like 完成like查询)
  5. echarts line 去掉最外围方框_干货 | 关于射频芯片最详细解读
  6. 底量超顶量超级大黑马指标源码_一旦出现底量超顶量形态,是超级大黑马诞生!...
  7. Python绘图,圣诞树,花,爱心 | Turtle篇
  8. 分类模型评估之ROC-AUC曲线和PRC曲线
  9. 调出远程桌面的任务管理器
  10. 基于Java的汽车租赁系统
  11. 漫画:Dijkstra 算法的优化
  12. python发展调研报告_实战 | Python自动生成PPT调研报告
  13. Web漏洞扫描工具AppScan v10.0.0的下载安装与使用
  14. webstorm中文版修改
  15. html中css字体颜色设置,css样式字体设置宋体 css中font字体颜色怎么设置
  16. Gym - 101350I - Mirrored String II (马拉车)
  17. 计算机论文致谢词范文500字,2021年论文致谢词范文500字(通用5篇)
  18. vb发送到文件服务器,VB实现文件上传到FTP服务器
  19. python解码图片_python的opencv读取解码的base64图片失败
  20. 火山PC_火山视窗0基础入门课程23课

热门文章

  1. 浅谈中国程序员的四个层次,你在第几层?
  2. 关于File.separator[转]
  3. 个人独资企业,核定征收;怎么申请?
  4. python对excel操作简书_python Excel 写
  5. 玩家交互体验—剑网3聊天系统
  6. 个推里群推php教程,GitHub - lyx2297999137/yii2-igetui: yii2个推
  7. SELECT不加FROM子句的用法
  8. 程序员缺少自信怎么办? AI 训练数千次的回答
  9. 什么是EDM营销?EDM营销和一般营销方式的区别分析
  10. PTA 7-47 打印选课学生名单 (25 point(s))