图像数据处理

常见的图像处理任务包括显示、裁剪、翻转、旋转、图像分割、分类和特征提取、图像恢复和图像识别等
Python的十个图像处理模块
1、PIL(Python Imaging Library Python,图像处理类库)提供了通用的图像处理功能,以及大量有用的基本图像操作,比如图像缩放、裁剪、旋转、颜色转换等。利用 PIL 中的函数,我们可以从大多数图像格式的文件中读取数据,然后写入最常见的图像格式文件中。PIL 中最重要的模块为 Image 。PIL提供最基础的数字图像处理
2、scikit-image。scikit-image是一个与numpy数组一起使用的开源Python包,它包括分割,几何变换,色彩操作,分析,过滤等算法。https://blog.csdn.net/u012300744/article/details/80083282里有相关用法
3、NumPy(Numeric Python)。提供了许多高级的数值编程工具,如:矩阵数据类型、矢量处理,以及精密的运算库。图像本质上是包含数据点像素的标准numpy数组
4、SciPy。numpy是一个高性能的多维数组的计算库,SciPy是构建在numpy的基础之上的,它提供了许多的操作numpy的数组的函数
5、OpenCV-Python,是一个c++库,提供了python接口
6、simpleCV
7、Mshotas
8、SimpleITK
9、pgmagick
10、Pycairo

以中心为原点裁剪得到任意尺寸的图片

1、读取图片

from skimage import io
picture = io.imread("图片路径 ")
io.imshow(picture)

2、中心裁剪任意尺寸的图片,裁剪成1000*1000

p_width, p_height, _ = img_data.shape
if p_width < 1000:
raise Exception(
“The width of image must be at least {} pixels!”.format(P_WIDTH))
# 图片宽度应大于想要裁剪后的宽度512
elif p_height < 1000:
raise Exception(
“The height of image must be at least {} pixels!”.format(P_HEIGHT))
# 图片高度应大于想要裁剪后的高度512
width_crop = (p_width - 1000) // 2
height_crop = (p_height - 1000) // 2
if width_crop > 0:
img_data = img_data[width_crop:-width_crop, :, :]
if height_crop > 0:
img_data = img_data[:, height_crop:-height_crop,:]
io.imshow(img_data)

对图片进行降噪处理(以验证码图片为例)

1、先通过二值化处理把干扰线去掉:

from PIL import Image
def two_value():
for i in range(1,5):
# 打开图片
image=Image.open(’./’+str(i)+’.jpg’)
# 灰度图
lim=image.convert(‘L’)
# 灰度阈值设为165,低于165的点全部填白色
tshold=165
table=[]
for j in range(256):
if j<tshold:
table.append(0)
else:
table.append(1)
bim=lim.point(table,‘1’)
bim.save(’./Img2/’+str(i)+’.jpg’)
two_value()

2、对黑白图片进行降噪,去掉那些单独的黑色像素点:

from PIL import Image
im = Image.open(’./1.jpg’)#去除干扰线
data = im.getdata()#图像二值化
w,h = im.size
black_point = 0
for x in range(1,w-1):
for y in range(1,h-1):
mid_pixel = data[wy+x] # 中央像素点像素值
if mid_pixel <50: # 找出上下左右四个方向像素点像素值
top_pixel = data[w
(y-1)+x]
left_pixel = data[wy+(x-1)]
down_pixel = data[w
(y+1)+x]
right_pixel = data[w*y+(x+1)]
# 判断上下左右的黑色像素点总个数
if top_pixel <10:
black_point += 1
if left_pixel <10:
black_point += 1
if down_pixel <10:
black_point += 1
if right_pixel <10:
black_point += 1
if black_point <1:
im.putpixel((x,y),255)
# print(black_point)
black_point = 0
im.save(‘xxxx.jpg’)

3、对边框上附着的黑色像素点进行消除:

from PIL import Image
im = Image.open(’./1.jpg’)#去除干扰线
data = im.getdata()#图像二值化
w,h = im.size
black_point = 0
for x in range(1,w-1):
for y in range(1,h-1):
if x<2 or y<2 :
im.putpixel((x-1, y-1), 255)
if x>w-3 or y>h-3:
im.putpixel((x+1 , y+1 ), 255)
im.save(‘xxx.jpg’)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值