OpenCV Python 椭圆 和 FDDB 数据库
程序员文章站
2024-03-14 21:22:05
...
在人脸检测算法中,FDDB人脸数据集的人脸标注是椭圆形的框。
FDDB: Face Detection Data Set and Benchmark
数据格式如下:
major_axis_radius minor_axis_radius angle center_x center_y 1
长轴,短轴,角度,椭圆中心X,椭圆中心Y,类别1
2002/08/15/big/img_346
2
57.900200 36.595000 -1.522423 167.614400 65.427201 1
58.832400 43.598899 1.552231 304.969700 89.517800 1
图像
使用OpenCV将椭圆框的人脸标记到图像中,注意:椭圆函数是ellipse()的轴参数,是先短轴后长轴,与FDDB数据集正好相反。
import cv2
img = cv2.imread('./data/img_346.jpg') # 读取图像
cv2.ellipse(img, center=(167, 65), axes=(36, 58),
angle=-1.522423, startAngle=0, endAngle=360,
color=255)
cv2.ellipse(img, center=(304, 89), axes=(43, 58),
angle=1.552231, startAngle=0, endAngle=360,
color=255)
cv2.imshow('Image', img)
cv2.imwrite('./data/img_346.bbox.jpg', img)
cv2.waitKey(0)
将椭圆框转换为矩形框,中心加减长短轴,就是矩形框的两个对角点:
import cv2
img = cv2.imread('./data/img_346.jpg')
cv2.ellipse(img, center=(167, 65), axes=(36, 58),
angle=-1.522423, startAngle=0, endAngle=360,
color=255)
cv2.ellipse(img, center=(304, 89), axes=(43, 58),
angle=1.552231, startAngle=0, endAngle=360,
color=255)
i1_pt1 = (167 - 36, 65 - 58)
i1_pt2 = (167 + 36, 65 + 58)
cv2.rectangle(img, pt1=i1_pt1, pt2=i1_pt2, color=(255, 0, 255))
i2_pt1 = (304 - 43, 89 - 58)
i2_pt2 = (304 + 43, 89 + 58)
cv2.rectangle(img, pt1=i2_pt1, pt2=i2_pt2, color=(255, 0, 255))
cv2.imshow('Image', img)
cv2.imwrite('./data/img_346.bbox.jpg', img)
cv2.waitKey(0)
OK, that’s all! Enjoy it!
下一篇: 学习C#泛型概述,泛型用来解决什么问题
推荐阅读
-
OpenCV Python 椭圆 和 FDDB 数据库
-
python实现人脸口罩检测(基于opencv和深度学习两种方法)
-
Python实现数据库并行读取和写入实例
-
Python实现数据库并行读取和写入实例
-
python爬取玉米、小麦、水稻信息数据到本地为网页形式和mysql数据库中
-
python3scrapy模块爬取国家粮油信息中心的政策法规和产业信息标题、文章内容等信息到数据库
-
Python利用sqlite实现对数据库的增删改和查询等基本操作
-
python和mysql连接数据库的问题
-
python和opencv构建运动检测器的实现
-
Python 图像处理 OpenCV (13): Scharr 算子和 LOG 算子边缘检测技术