当前位置:   article > 正文

Opencv-Python图像预处理之手掌指纹提取_openmv进行掌纹特征提取识别

openmv进行掌纹特征提取识别

Opencv-Python图像预处理之手掌指纹提取@TOC

读取图像

首先用到Opencv的imread()函数将要预处理的图像进行读取

'''
读取图像
'''
img = cv2.imread("/home/wei/test.jpg", -1)
img = cv2.resize(img, (960, 640))          #由于原图太大,所以压缩一下图像的小

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6



图像会度化(这应该是所有预处理必须作的)

使用Opencv的cvtColor()函数,参数设置cv2.COLOR_RGB2GRAY(RGB图像转GRAY)

'''
图像灰度化
'''
img_gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
  • 1
  • 2
  • 3
  • 4

图像会度化



由于图像进行了二值转化之后,细纹路并没有很明显,此时需要进行对比度增加来突出掌纹``

'''
图像灰度化
'''
img_gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
cv2.imshow("img_gray", img_gray)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在这里插入图片描述左边为原图,右边为增强对比度后的图像



图像边缘检测(Laplacian)

'''
边缘检测Laplacian
'''
img_Laplacian = cv2.Laplacian(o, cv2.CV_8U, o, ksize = 5)
cv2.imshow('img_Laplacian', img_Laplacian)
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述在进行了边缘检测之后,会发现,即使纹路提取出来了,但是存在很多噪点,以及纹路并不清晰干练,接下来要进行形态学操作。



开运算

先进行腐蚀再进行膨胀就叫做开运算。开运算 (image)= 膨胀 (腐蚀 (image))

图像被腐蚀后,去除了噪声,但会压缩图像;对腐蚀过的图像进行膨胀处理,可以去除噪声并保持原有形状。

'''
开运算
'''
kernel = np.ones((2,2), np.uint8)
erosio1 = cv2.erode(img_Laplacian, kernel, iterations = 1)
dilate1 = cv2.dilate(erosio1, kernel, iterations = 1)
res = np.hstack((erosio1,dilate1))
cv2.imshow("res", res)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

在这里插入图片描述

左边是进行了腐蚀,右边则是对腐蚀后的图像进行膨胀操作(开运算)。
很明显,边界部分的很多噪点已经处理了,并且掌纹线路更加清晰。
随后在进行简单的双边滤波再次进行去噪就能得到效果图。

'''
滤波
'''
img_final = cv2.bilateralFilter(dilate1, 150, 80, 80)
cv2.imshow('img_final', img_final)
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述




可能最终效果并不是很好,欢迎各位前辈指导
最后附上完整代码!!!

import cv2
import os
import numpy as np

'''
读取图像
'''
img = cv2.imread("/home/wei/test.jpg", -1)
img = cv2.resize(img, (960, 640))          #由于原图太大,所以压缩一下图像的小

'''
图像灰度化
'''
img_gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
cv2.imshow("img_gray", img_gray)

'''
增加图像对比度
'''
scal = 1.7
o = img_gray * float(scal)
o[o>255] = 255
o = np.round(o)
o = o.astype(np.uint8)
img_par = np.hstack((img_gray, o))
cv2.imshow("img_par", img_par)


'''
边缘检测Laplacian
'''
img_Laplacian = cv2.Laplacian(o, cv2.CV_8U, o, ksize = 5)
cv2.imshow('img_Laplacian', img_Laplacian)

'''
开运算
'''
kernel = np.ones((2,2), np.uint8)
erosio1 = cv2.erode(img_canny, kernel, iterations = 1)
dilate1 = cv2.dilate(erosio1, kernel, iterations = 1)
res = np.hstack((erosio1,dilate1))
cv2.imshow("res", res)

'''
滤波
'''
img_final = cv2.bilateralFilter(dilate1, 150, 80, 80)
cv2.imshow('img_final', img_final)
cv2.waitKey()
cv2.destroyAllWindows()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/346723
推荐阅读
相关标签
  

闽ICP备14008679号