基于python和opencv的图像处理

近期因为公司有个微信答题活动,答题完成后,需要将结果得分发到公司群里进行统计。每一张截图都需要按照截图中的姓名进行更名并完成统计,完成后将图片保存到公司服务器。所以我想试着做一个小程序可以对截图进行图像识别并提取图像中姓名,然后将其自动保存到一个EXCEL表。完成结果统计的同时,再由程序修改图片名称,并保存到公司服务器上。所以最近计划学习一点图像识别来完成这个小目标,如有更简单的实现方法,可以评论区告诉我一声,谢谢。(我之前看网上有tesseract-ocr可以完成,但是安装环境始终配置不对,有没有这个配置好的,可以联系我,万分感谢!)

1.图像的基本表示方法

1.二值图像:指含有黑色和白色的图像。在计算机中,图像的处理是通过矩阵来实现的。计算机在处理该图像时,先将其划分为若干个小方块,每一个小方块就是一个独立的处理单位,可以称之为像素点。然后,计算机会将白色的像素点处理为“1”,将黑色的像素点处理为“0”,由于图像只使用两个数字就可以表示,因此,计算机使用一个比特位表示二值图像。

2.灰度图像:计算机会将灰度处理为256个灰度级,用数值区间[0,255]来表示。其中,数值“255”表示纯白色,数值“0”表示纯黑色,其余的数值表示从纯白到纯黑之间不同级别的灰度。用于表示256个灰度级的数值0 255,正好可以用8位二进制来表示。有时也会使用8位二进制来表示二值图像。其中,“0”表示黑色,“255”表示白色。

3.彩色图像:与二值图像和灰度图像相比,彩色图像明显可以表示出更多的图像信息。有研究发现,人类的视网膜能够感受到红色、绿色和蓝色三种不同的颜色,即三基色。在自然界中,各种常见的不同颜色的光都可以通过三基色按照一定的比例混合而成。从人的视觉角度来看,可以将颜色解析为色调、饱和度和亮度等,在RGB色彩空间中,存在R(red,红色)通道、G(green,绿色)通道和B(blue,蓝色)通道。每个色彩通道值的范围都在[0,255]之间,计算机使用这三个色彩通道的组合表示颜色。对于计算机来说,每个通道的信息就是一个一维数组,所以,通常使用一个三维数组来表示一幅RGB色彩空间的彩色图像。在RGB色彩空间中,存在R(red,红色)通道、G(green,绿色)通道和B(blue,蓝色)通道。每个色彩通道值的范围都在[0,255]之间,计算机使用这三个色彩通道的组合表示颜色。对于计算机来说,每个通道的信息就是一个一维数组,所以,通常使用一个三维数组来表示一幅RGB色彩空间的彩色图像。

2.图像处理的基本操作

图像处理可以看作计算机对像素的处理。在面向Python的OpenCV中,可以通过位置索引的方式对图像内的像素进行访问和处理。

cv2库安装:pip install opencv-python

1.读取图像:

语法:cv2.imread(filename[,flags]) filename:包含路径的完整文件名称,flags读取标记,用来控制读取文件的类型,一般为默认

基于python和opencv的图像处理

实例:

基于python和opencv的图像处理

基于python和opencv的图像处理

执行结果:

基于python和opencv的图像处理

PS:就我个人理解,计算机处理图片时,是把图片划分成像素单位进行处理,这个像素在二值化、灰度图像、彩色图像中表现不同。例如上图,是彩色图片,它由很多个像素组成,每一个像素在计算机中又由RGB三原色来表示,经过CV2读取后,就会得到RGB三原色的数组。说一下像素点,平时我们手机所说的5000W,6000W,1亿像素说的是图片中像素的组成密度,一张图片拍出来后由多少像素点组成。像素越多,图片越细腻。

2.显示图像

语法:cv2.namedWindow(window) 括号中为窗口名。这句话的意思是新打开一个用于展示图片的窗口

实例:

基于python和opencv的图像处理

执行结果:

基于python和opencv的图像处理

语法:cv2.imshow(window,image) #window窗口名字,image要显示的图像,也就是把图像显示在新打开的窗口中。这种语法跟tkinter中的容器控件差不多。

语法:cv2.waitKey([delay])#delay表示等待键盘触发的时间,单位是ms。当该值为负数或0时表示无限等待,默认值为0。

基于python和opencv的图像处理

语法:cv2.destroyALLWindows()#释放所有打开的窗口

基于python和opencv的图像处理

ps:如果之前没有释放掉内存的操作的话destroyallWIndows会释放掉被那个变量占用的内存。

实例:

基于python和opencv的图像处理

执行结果:

基于python和opencv的图像处理

PS:关于destroyAllWindows的用法,不加上这一句图片也会正常打开,但是你按键盘,图片不会关闭,当你将这句加上时,按键盘打开的窗口会全部关闭。

3.保存图像

语法:cv2.imwrite(filename,img[,params])#filename是要保存的图像的完整路径名,包括文件的扩展名。 img是要保存的图像的名字。 params是保存的类型参数,可选。

实例:

基于python和opencv的图像处理

执行结果:

基于python和opencv的图像处理

3.图像通道的基本操作

photoshop里面有对RGB三色通道的处理方法,可选择单一通道进行操作,cv2中同样有这种功能,可以使用split()和merge()函数进行拆分和合并通道操作。

1.split()拆分函数

语法:b,g,r=cv2.split(img)# b、g、r分别是B通道、G通道、R通道的图像信息。 img是要拆分的图像。

实例:

基于python和opencv的图像处理

执行结果:

基于python和opencv的图像处理

Ps:这种图像处理方式在photoshop中也是存在的。

2.merge()合并函数

语法:b,g,r=cv2.merge([b,g,r])# b、g、r分别是B通道、G通道、R通道的图像信息。

实例:

基于python和opencv的图像处理

执行结果:

基于python和opencv的图像处理

Ps:三色通道合并后还是原图

展开阅读全文

页面更新:2024-04-10

标签:灰度   数组   数值   语法   像素   图像   通道   色彩   计算机   图片

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top