小白带你识别人脸和篮球

1.opencv识别人脸

重点是这个文件haarcascade_frontalface_default.xml,学习的文件https://github.com/opencv/opencv/tree/master/data/haarcascades下载

import cv2
# 读取待检测的图像
image = cv2.imread('mian.jpg')
# 获取XML文件,加载人脸检测器
faceCascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
# 色彩转换,转换为灰度图像
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 调用函数detectMultiScale
faces = faceCascade.detectMultiScale(
    gray,
    scaleFactor = 1.15,
    minNeighbors = 5,
    minSize = (5,5)
)
print(faces)
# 打印输出的测试结果
print("大成发现发现{0}个人脸!".format(len(faces)))
# 逐个标注人脸
for(x, y, w, h) in faces:
    # cv2.rectangle(image, (x, y), (x+w, y+w), (0,255,0),2) #矩形标注
    cv2.circle(image, (int((x+x+w)/2), int((y+y+h)/2)), int(w/2), (0,255,0),2)
# 显示结果
cv2.imshow("dect", image)
# 保存检测结果
cv2.imwrite("remain.jpg", image)
cv2.waitKey(0)
cv2.destroyAllWindows()

2.照片样本

3.2 篮球

3.3 给篮球画点

import cv2
img = cv2.imread('ball.jpg')
# 灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
print(gray)
# 二值化
ret,binary=cv2.threshold(gray,97,188,cv2.THRESH_BINARY)
contours, hierarchy = cv2.findContours(binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
#橘色
cv2.drawContours(img, contours, -1, (0, 97, 255), 3)
cv2.imshow("img", img)
cv2.waitKey(0)

3.4 效果

识别的篮球图像

 

4.总结

  • 研究haarcascade_frontalface_default这个文件怎么生成的里面的格式都是数值。
  • 篮球识别还需要细化色差。

猜你喜欢

转载自blog.csdn.net/keny88888/article/details/105766690
今日推荐