本文来源:https://blogs.lakshaykumar.tech/computer-vision-made-easy
作者: Lakshay Kumar
计算机视觉让我非常着迷,这些天我正在探索计算机视觉的世界。在工作期间,我意识到我们必须为基本的计算机视觉技术(如面部检测、手部检测、姿势分类等)编写数百行代码。我探索了 opencv 和 mediapipe 库,这帮助我获得了对计算机视觉的很多见解。我开发了一些包,可以帮助开发者社区更多地关注实现而不是从头开始编码。这是我最近开发的三个包。
1.人脸检测
功能
faceDetector(image, draw=False)
-
函数参数:此函数将
image
(单帧)作为输入和一个draw
默认值为False的变量。如果要在框架上的面部上绘制矩形框,可以将参数的值更改draw
为Trueimage
。 -
输出:此函数返回一个长度为 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的变量。如果要映射手在框架上的映射,可以将参数的值更改draw
为True 。image
-
输出:此函数返回一个长度为 2 的嵌套列表。索引 1 处的元素是
frame
和 的列表handLandmarks
。handLandmarks
在此链接上了解有关这些的更多信息。请注意,如果未检测到手,该函数将在列表中的索引 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开发。这是为了记住编写冗长的代码来检测面部的痛苦而开发的。这将使其他开发人员能够更多地关注实现部分,而不是花时间编写人脸检测模块。
网友评论