python的N个小功能(图片预处理:打开图片,滤波器,增强,灰度图转换,去噪,二值化,切割,保存)
#############################################################################################
############################图片预处理以及图片裁剪###########################################
#############################################################################################
######图片切割##########
import os
import os.path
from PIL import Image
from PIL import ImageFilter
from PIL import ImageEnhance
import time
#########################切割函数#########################################
#################我的是根据目标图片,80*20以及实验得出结论################
##########################################################################
def segment(im):
s=6 #首次第一个点的横坐标
w=16 #宽度
h=20 #第二个点的纵坐标
t=0 #第一个点的纵坐标
im_new=[]#在一张图片裁剪四个区域
#for i in range(4):
# im1=im.crop((s+w*i,t,s+w*(i+1),h)) #crop函数得到局部区域
# im_new.append(im1)
im1=im.crop((6,0,6+17,20))
im_new.append(im1)
im1=im.crop((23,0,23+16,20))
im_new.append(im1)
im1=im.crop((39,0,39+16,20))
im_new.append(im1)
im1=im.crop((55,0,55+18,20))
im_new.append(im1)
return im_new
#################图片增强######################################
#################图片二值化函数:符合阈值之上,设为1;否则设为0###
###############################################################
def binarizing(im,threshold):
pixdata=im.load()
w,h=im.size
for j in range(h):
for i in range(w):
if pixdata[i,j]<threshold:
pixdata[i,j]=0
else:
pixdata[i,j]=255
return im
################################图片去噪############################
##########对于像素值>245的邻域像素,判别为属于背景色################
##########,如果一个像素上下左右4各像素值有超过2个##################
##########像素属于背景色,那么该像素就是目标点,否则就是噪声##########
####################################################################
def denoising(im):
pixdata=im.load()
w,h=im.size
for j in range(1,h-1):
for i in range(1,w-1):
count=0
if pixdata[i,j-1]>245:
count=count+1
if pixdata[i,j+1]>245:
count=count+1
if pixdata[i+1,j]>245:
count=count+1
if pixdata[i-1,j]>245:
count=count+1
if count>2:
pixdata[i,j]=255
return im
###############################################################################
##############图片转换:打开图片,滤波器,增强,灰度图转换,去噪,二值化############
###############################################################################
def imgTransfer(f_name):
im=Image.open(f_name) #打开图片
im=im.filter(ImageFilter.MedianFilter(1)) #对于输入图像的每个像素点,该滤波器从(size,size)的区域中拷贝中值对应的像素值存储到输出图像中
#enhancer=ImageEnhance.Contrast(im)
#im=enhancer.enhance(1)
im=ImageEnhance.Contrast(im).enhance(1.5)#enhance()的参数factor决定着图像的对比度情况。从0.1到0.5,再到0.8,2.0,图像的对比度依次增大.0.0为纯灰色图像;1.0为保持原始
im=im.convert('L') #灰度图转换
im=denoising(im) #图片去噪
im=binarizing(im,200) #图片二值化
#im=nse.removeNoisy(im)
#im.save('/User/iswin/Downloads/vim/test.clear.jpg','jpeg')
#im.show()
return im
#####批量裁剪图片,并保存######################################
def cutPictures(img):
im=imgTransfer(img)#####图片预处理,二值化,图片增强
pics=segment(im) #######用crop函数裁剪
for pic in pics:
pic.save('G:\Test\%s.jpg'%(int(time.time()*1000000)),'jpeg')
rootdir=u'G:\Test'
for parent,dirnames,filenames in os.walk(rootdir):
for dirname in dirnames:
print "dirname is:"+dirname
print "parent is:"+parent
for filename in filenames:
print "filename is:"+filename
print "parent is:"+parent
print "the full name is:"+os.path.join(parent,filename)
cutPictures(os.path.join(parent,filename))
########实验效果如下:


python的N个小功能(图片预处理:打开图片,滤波器,增强,灰度图转换,去噪,二值化,切割,保存)的更多相关文章
- 机器学习进阶-项目实战-信用卡数字识别 1.cv2.findContour(找出轮廓) 2.cv2.boudingRect(轮廓外接矩阵位置) 3.cv2.threshold(图片二值化操作) 4.cv2.MORPH_TOPHAT(礼帽运算突出线条) 5.cv2.MORPH_CLOSE(闭运算图片内部膨胀) 6. cv2.resize(改变图像大小) 7.cv2.putText(在图片上放上文本)
7. cv2.putText(img, text, loc, text_font, font_scale, color, linestick) # 参数说明:img表示输入图片,text表示需要填写的 ...
- python图片二值化提高识别率
import cv2from PIL import Imagefrom pytesseract import pytesseractfrom PIL import ImageEnhanceimport ...
- 致敬学长!J20航模遥控器开源项目计划【开局篇】 | 先做一个开机界面 | MATLAB图像二值化 | Img2Lcd图片取模 | OLED显示图片
我们的开源宗旨:自由 协调 开放 合作 共享 拥抱开源,丰富国内开源生态,开展多人运动,欢迎加入我们哈~ 和一群志同道合的人,做自己所热爱的事! 项目开源地址:https://github.com/C ...
- [置顶] c#验证码识别、图片二值化、分割、分类、识别
c# 验证码的识别主要分为预处理.分割.识别三个步骤 首先我从网站上下载验证码 处理结果如下: 1.图片预处理,即二值化图片 *就是将图像上的像素点的灰度值设置为0或255. 原理如下: 代码如下: ...
- 深度学习实践-强化学习-bird游戏 1.np.stack(表示进行拼接操作) 2.cv2.resize(进行图像的压缩操作) 3.cv2.cvtColor(进行图片颜色的转换) 4.cv2.threshold(进行图片的二值化操作) 5.random.sample(样本的随机抽取)
1. np.stack((x_t, x_t, x_t, x_t), axis=2) 将图片进行串接的操作,使得图片的维度为[80, 80, 4] 参数说明: (x_t, x_t, x_t, x_t) ...
- opencv python:图像二值化
import cv2 as cv import numpy as np import matplotlib.pyplot as plt # 二值图像就是将灰度图转化成黑白图,没有灰,在一个值之前为黑, ...
- python实现超大图像的二值化方法
一,分块处理超大图像的二值化问题 (1) 全局阈值处理 (2) 局部阈值 二,空白区域过滤 三,先缩放进行二值化,然后还原大小 np.mean() 返回数组元素的平均值 np.std() 返回数 ...
- opencv2对于读书笔记——二值化——thresholded功能
opencv二进制图象值功能threshold功能 其结构 double cv::threshold( //二值化函数 const CvArr* src, //原始图像 CvArr* dst, //输 ...
- opencv 删除二值化图像中面积较小的连通域
对于上图的二值化图像,要去除左下角和右上角的噪点,方法:使用opencv去掉黑色面积较小的连通域. 代码 CvSeq* contour = NULL; double minarea = 100.0; ...
随机推荐
- request.getParameter()和request.getAttribute()的区别
request.getParameter("val_1");这是获取请求的参数,比如你在url上看到的?id=12&name=abc就是参数,如果是post请求,就看不到. ...
- TCP协议的特点
tcp 面向连接,三次握手,创建会话:双向的关闭tcp 可靠性,具备传输确认机制,接收端会对接收到的数据进行ack确认;tcp 具备 rtt (raund动态估算传输时间;tcp 具备超时重传机制tc ...
- hdu1272小希的迷宫(并查集判断回路和是否连通)
传送门 迷宫中不能有回路,还要连通 如果最后集合数是一个那就是连通,否则不联通 要合并的两个顶点在相同集合内,表示出现了回路 输入时注意一下 #include<bits/stdc++.h> ...
- 【Python学习笔记】正则表达式
Ref:https://deerchao.net/tutorials/regex/regex.htm#greedyandlazy 1. 常用元字符 2.字符转义 查找元字符本身时,需要使用\来取消这些 ...
- Calico网络方案
参考文档: Difficulties with traditional overlay networks:https://www.projectcalico.org/learn/ Get Start( ...
- linux获得命令使用帮助
1. 内部命令: help CMD 2. 外部命令: CMD --help 3. 命令手册: manual(所有命令) man CMD 分章节: 1: 用户命令(User Commands - /bi ...
- Vue 入门之数据绑定
什么是双向绑定? Vue 框架很核心的功能就是双向的数据绑定. 双向是指:HTML 标签数据 绑定到 Vue 对象,另外反方向数据也是绑定的.通俗点说就是,Vue 对象的改变会直接影响到 HTML 的 ...
- git push remote: User permission denied
这种错误因为本地保存了一个错误的账号密码,只需要重新编辑成正确的账号密码 直接上方法
- 硬件设计原理图Checklist 参考案例二 【转载】
类别 描述 检视规则 原理图需要进行检视,提交集体检视是需要完成自检,确保没有低级问题. 检视规则 原理图要和公司团队和可以邀请的专家一起进行检视. 检视规则 第一次原理图发出进行集体检视后所有的修改 ...
- 基于NABCD评论作业-王者荣耀交流协会PSP DAILY
一.根据(不限于)NABCD评论作品的选题 N(Need,需求):在我知道PSP DAILY这款软件的时候,就认为这款软件对于学习软件工程课的学生来说有很大的需要.对于需求来说,软件工程课程中的学 ...