美文网首页
【人工智能】让计算机视觉变得简单!

【人工智能】让计算机视觉变得简单!

作者: BlueSocks | 来源:发表于2022-09-16 10:33 被阅读0次

    本文来源:https://blogs.lakshaykumar.tech/computer-vision-made-easy
    作者: Lakshay Kumar

    计算机视觉让我非常着迷,这些天我正在探索计算机视觉的世界。在工作期间,我意识到我们必须为基本的计算机视觉技术(如面部检测、手部检测、姿势分类等)编写数百行代码。我探索了 opencv 和 mediapipe 库,这帮助我获得了对计算机视觉的很多见解。我开发了一些包,可以帮助开发者社区更多地关注实现而不是从头开始编码。这是我最近开发的三个包。

    1.人脸检测

    试试看

    功能

    faceDetector(image, draw=False)

    • 函数参数:此函数将image(单帧)作为输入和一个draw默认值为False的变量。如果要在框架上的面部上绘制矩形框,可以将参数的值更改drawTrueimage
    • 输出:此函数返回一个长度为 2 的嵌套列表。索引 1 处的元素是frame和 的列表[x,y,w,h]x是面部的最小 x 坐标,是面部y的最小 y 坐标,w是面部的宽度和h高度。请注意,如果函数中的值设置为 True,则frame面部上方将有矩形框draw

    用法

    faceDetector(图像,绘制=假)

    通过功能直接检测面部

    from lkfacedetection import faceDetector
    import cv2
    cap = cv2.VideoCapture(0)
    while True:
        success, image = cap.read()
        functionValues = faceDetector(image,draw=True) #draw over the frame from function
        frame = functionValues[0]
        cv2.imshow('Face', frame)
        cv2.waitKey(1)
    cap.release()
    

    使用函数中的值进行外部检测

    from lkfacedetection import faceDetector
    import cv2
    cap = cv2.VideoCapture(0)
    while True:
        success, image = cap.read()
        functionValues = faceDetector(image) #doesn't draw over the frame
        frame = functionValues[0]
        x,y,w,h = functionValues[1]
        cv2.rectangle(frame, (x, y), (x + w, y + h), (255, 0, 0), 2) #Draws a rectangle over the face
        cv2.imshow('Face', frame)
        cv2.waitKey(1)
    cap.release()
    
    

    2.手部追踪包

    试试看

    功能

    handTracker(image,draw=True)

    • 函数参数:此函数将image(单帧)作为输入和一个draw默认值为False的变量。如果要映射手在框架上的映射,可以将参数的值更改drawTrue 。image
    • 输出:此函数返回一个长度为 2 的嵌套列表。索引 1 处的元素是frame和 的列表handLandmarkshandLandmarks在此链接上了解有关这些的更多信息。请注意,如果未检测到手,该函数将在列表中的索引 1 处返回 [0]

    用法

    手跟踪器(图像,绘制=假)

    直接从函数映射到手。

    from lkhandtracking import handTracker
    import cv2
    
    cap = cv2.VideoCapture(0)
    while True:
        success, image = cap.read()
        functionValues = handTracker(image,draw=True)
        image = functionValues[0]
        handLms = functionValues[1]
        print(handLms)
        cv2.imshow('Hands', image)
        cv2.waitKey(1)
    cap.release()
    
    

    无需映射即可追踪手部。

    from lkhandtracking import handTracker
    import cv2
    
    cap = cv2.VideoCapture(0)
    while True:
        success, image = cap.read()
        functionValues = handTracker(image,draw=False)
        image = functionValues[0]
        handLms = functionValues[1]
        print(handLms)
        cv2.imshow('Hands', image)
        cv2.waitKey(1)
    cap.release()
    
    

    3.身体分割

    试试看

    功能

    bodySegmentation(orignalImg,backgroundImg=(255,255,255),threshold=0.3)

    • 函数参数:此函数采用orignalImg即分割必须发生的图像。其他参数即backgroundImg设置背景颜色,默认为白色,但可根据用户需要更改。阈值定义必须移除背景的级别。
    • 输出:函数返回一个帧作为背景被分割的输出。

    用法

    身体分割(img)

    默认分割(白色背景)

    from lkbodysegmentation import bodySegmentation
    import cv2
    
    cap = cv2.VideoCapture(0)
    
    while True:
        success, img = cap.read()
        img = bodySegmentation(img)
        cv2.imshow('Image',img)
        cv2.waitKey(1)
    
    

    bodySegmentation(img, backgroundColor, 阈值)

    自定义细分

    from lkbodysegmentation import bodySegmentation
    import cv2
    
    cap = cv2.VideoCapture(0)
    
    while True:
        success, img = cap.read()
        backgroundColor = (255,0,255) #You can replace with an image too
        threshold = 0.45 #Level of background to be erased
        img = bodySegmentation(img,backgroundColor,threshold)
        cv2.imshow('Image',img)
        cv2.waitKey(1)
    
    

    开发商

    该软件包由热情的 AI 研究员Lakshay Kumar开发。这是为了记住编写冗长的代码来检测面部的痛苦而开发的。这将使其他开发人员能够更多地关注实现部分,而不是花时间编写人脸检测模块。

    相关文章

      网友评论

          本文标题:【人工智能】让计算机视觉变得简单!

          本文链接:https://www.haomeiwen.com/subject/alljortx.html