巧借”haarcascade“快速完成数据集制作

简介: 巧借”haarcascade“快速完成数据集制作

前言


  在做CV识别或检测任务的时候,想必大家都曾为数据集发愁过,在这里我将介绍一个快捷方式,制作属于自己的的数据集


  此数据集我们以人脸为例子,为了区分带口罩和不带口罩的区别。我们需要的图像有两类,一类是不带口罩的人脸,另一类是带口罩的人脸。我在使用OpenCv模块的时候,发现有一个很好的模块:haarcascade_frontalface_alt2.xml,可以很好的检测到人脸;我这里将在它的基础上拓展制作属于自己的数据集。




摄像头采集制作


  PC机+摄像头+自己+demo ='数据集' 大家可以借鉴juejin.cn/post/707483… 实现人脸检测,在这个demo的基础上做一些改进。


   人脸检测已经具备了的话,我们现在需要在检测到人脸的基础上把人脸扣出来,摄像头是使用CV读取的,这里我们采用矩阵的裁剪,将人脸部分裁剪下来并存至指定位置。


  我们分别制作两份数据:带口罩和不带口罩,在摄像头下都可以顺利的裁剪出自己的人脸

if __name__ == "__main__":
    capture = cv2.VideoCapture(0)
    fps = 0.0
    while True:
        t1 = time.time()
        ref, frame = capture.read()
        frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
        (p_image, face_coor) = format_image(frame)
        if face_coor is not None:
            # 获取人脸的坐标,并用矩形框出
            [x, y, w, h] = face_coor
            cv2.rectangle(frame, (x, y), (x + w, y + h), (255, 0, 0), 1)
            x0 = x
            y0 = y
            x1 = x + w
            y1 = y + h
            crop_img = frame[y0:y1, x0:x1]  # x0,y0为裁剪区域左上坐标;x1,y1为裁剪区域右下坐标
            img_name = uuid.uuid1()
            cv2.imwrite('C:/Users/kiven/Desktop/do_img/faces/%s.jpg' % img_name, crop_img)  # save_path为保存路径
        frame = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)
        fps = (fps + (1. / (time.time() - t1)))/2
        frame = cv2.putText(frame, "fps= %.2f" % (fps), (0, 40), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)
        cv2.imshow("video", frame)
        c = cv2.waitKey(1) & 0xff
        if c == 27:
            capture.release()
            break
    capture.release()
    cv2.destroyAllWindows()


文件夹读取制作


  大家或许没有摄像头或者不喜欢用自己的头像制作数据集,那么可以在网上爬取一些带口罩图像和不带口罩图像,定位模块同摄像头部分一样,在数据读取上有些许差异。


可参考:

if __name__ == "__main__":
    NewPersonImgPath = 'C:/Users/kiven/Desktop/Doimgs/score/images/val/'  #
    NewPersonImgPathLine = os.listdir(NewPersonImgPath)  # 获取工程车辆文件夹
    for NewPersonName in NewPersonImgPathLine:
        NewPersonImage = Image.open(NewPersonImgPath + NewPersonName)
        frame = cv2.cvtColor(numpy.asarray(NewPersonImage), cv2.COLOR_RGB2BGR)
        (p_image, face_coor) = format_image(frame)
        if face_coor is not None:
            # 获取人脸的坐标,并用矩形框出
            [x, y, w, h] = face_coor
            cv2.rectangle(frame, (x, y), (x + w, y + h), (255, 0, 0), 1)
            x0 = x
            y0 = y
            x1 = x + w
            y1 = y + h
            crop_img = frame[y0:y1, x0:x1]  # x0,y0为裁剪区域左上坐标;x1,y1为裁剪区域右下坐标
            # crop_img = cv2.cvtColor(crop_img, cv2.COLOR_RGB2BGR)
            crop_imgs = cv2.resize(crop_img, (50, 50), interpolation=cv2.INTER_CUBIC)
            img_name = uuid.uuid1()
            cv2.imwrite('C:/Users/kiven/Desktop/Doimgs/faces/%s.jpg' % img_name, crop_imgs)  # save_path为保存路径




相关文章
|
6月前
|
人工智能 数据挖掘 CDN
魔哈镜像迄今最大合成数据集 Cosmopedia
Cosmopedia 是一个由Mixtral-8x7B-Instruct-v0.1生成的合成教科书、博文、故事、帖子和WikiHow文章的数据集。该数据集包含超过3000万个文件和250亿个tokens,是HuggingFace用了10k张H100生成的迄今为止最大的开放合成数据集。
167 0
|
存储 数据采集 传感器
一文多图搞懂KITTI数据集下载及解析
一文多图搞懂KITTI数据集下载及解析
11315 2
一文多图搞懂KITTI数据集下载及解析
|
机器学习/深度学习 数据采集 人工智能
|
3月前
|
数据采集 人工智能 小程序
如何制作数据集并基于yolov5训练成模型并部署
这篇文章介绍了如何为YOLOv5制作数据集、训练模型、进行模型部署的整个流程,包括搜集和标注图片、创建数据集文件夹结构、编写配置文件、训练和评估模型,以及将训练好的模型部署到不同平台如ROS机器人、微信小程序和移动应用等。
如何制作数据集并基于yolov5训练成模型并部署
|
6月前
|
JSON 算法 Shell
【数据集】以人脸关键点为例讲解:如何通过开源项目快速制作关键点数据集
【数据集】以人脸关键点为例讲解:如何通过开源项目快速制作关键点数据集
130 0
|
XML JSON 算法
计算机视觉,算法应用自定义数据集制作
计算机视觉,算法应用自定义数据集制作
130 0
|
机器学习/深度学习 数据采集 自然语言处理
中文电影数据集情感分类的torch网络,数据集下载地址
步骤如下: 1. 数据集:找到一个中文电影评论数据集,可以从以下网站下载: • https://www.aclweb.org/anthology/O18-2012/ • https://github.com/SophonPlus/ChineseNlpCorpus/blob/master/datasets/ChnSentiCorp_htl_all/intro.ipynb • 2. 数据预处理:将数据集分为训练集和测试集,并进行数据清洗、分词等预处理。 3. 构建模型:使用 PyTorch 框架构建一个情感分类模型,可以使用 LSTM 或 Transformer 等深度学习模型。 4. 5.
535 0
|
程序员 图形学
1.使用Blender制作第一个模型
1.使用Blender制作第一个模型
519 0
|
图形学
【3D建模制作技巧分享】如何使用Maya制作绳索模型
Maya是很多建模师、动画师都使用的软件,它可以帮助我们制作出很多模型。下面为大家分享使用Maya制作绳索模型的方法,感兴趣的话就来看看吧!
287 0
【3D建模制作技巧分享】如何使用Maya制作绳索模型
下一篇
无影云桌面