龙空技术网

Python3图像处理学习笔记2023-6-25

不易9093 106

前言:

现时兄弟们对“二值化怎么实现”都比较重视,同学们都想要学习一些“二值化怎么实现”的相关资讯。那么小编也在网络上汇集了一些对于“二值化怎么实现””的相关文章,希望咱们能喜欢,你们快快来了解一下吧!

图片PNG、jpg、BMP等格式的内容,储存在MYSQL数据库中为二进制数据,用PYTHON3代码如何用第三方OpenCV、Dlib开源程序做人脸、车牌号码的比对?

首先,需要将储存在MYSQL数据库中的二进制数据转换为图片格式。可以使用Python的Pillow库来完成这个任务。

from PIL import Imageimport ioimport mysql.connector# 连接MySQL数据库mydb = mysql.connector.connect(  host="localhost",  user="yourusername",  password="yourpassword",  database="yourdatabase")# 查询二进制数据mycursor = mydb.cursor()mycursor.execute("SELECT image_data FROM images WHERE id = 1")result = mycursor.fetchone()# 将二进制数据转换为图片格式img = Image.open(io.BytesIO(result[0]))img.show()  # 显示图片

然后,可以使用OpenCV和Dlib库来进行人脸和车牌号码的比对。

人脸比对的样例代码如下:

import cv2import dlib# 加载模型detector = dlib.get_frontal_face_detector()predictor = dlib.shape_predictor("shape_predictor_68_face_landmarks.dat")# 加载图片img = cv2.imread('face.jpg')# 检测人脸gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)faces = detector(gray, 1)# 遍历检测到的人脸for face in faces:    # 识别人脸特征点    shape = predictor(gray, face)    # 绘制人脸区域和特征点    cv2.rectangle(img, (face.left(), face.top()), (face.right(), face.bottom()), (0, 255, 0), 2)    for i in range(68):        x = shape.part(i).x        y = shape.part(i).y        cv2.circle(img, (x, y), 2, (0, 0, 255), -1)# 显示图片cv2.imshow('result', img)cv2.waitKey(0)cv2.destroyAllWindows()

车牌号码比对的样例代码如下:

import cv2import pytesseract# 加载图片img = cv2.imread('plate.jpg')# 转换为灰度图像gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 二值化处理ret, thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY+cv2.THRESH_OTSU)# 去除噪声kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))opened = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, kernel)# 查找轮廓contours, hierarchy = cv2.findContours(opened, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)# 遍历轮廓for contour in contours:    # 获取轮廓的矩形框    x, y, w, h = cv2.boundingRect(contour)    # 根据矩形框大小过滤掉不合适的轮廓    if w/h > 2.5:        continue    # 截取车牌号码区域    plate_roi = img[y:y+h, x:x+w]    # 使用Tesseract OCR识别车牌号码    plate_text = pytesseract.image_to_string(plate_roi, lang='chi_sim')    print("车牌号码:", plate_text)# 显示图片cv2.imshow('result', img)cv2.waitKey(0)cv2.destroyAllWindows()

标签: #二值化怎么实现 #python读取二进制文件转为图片