Skip to content

Commit 0842d35

Browse files
Fix face detection empty check and add unit test (#83)
1 parent d7db3e5 commit 0842d35

File tree

2 files changed

+27
-3
lines changed

2 files changed

+27
-3
lines changed

src/detectface.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ def detectface(img):
1010
"facedetection/haarcascade_frontalface_default.xml"
1111
)
1212
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
13-
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
14-
if faces is ():
15-
return False
13+
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
14+
if faces is None or len(faces) == 0:
15+
return False
1616
for x, y, w, h in faces:
1717
roi_gray = img[y : y + h, x : x + w]
1818
cropped_img = np.expand_dims(

tests/test_detectface.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import os
2+
import unittest
3+
import numpy as np
4+
5+
# Ensure src is on the path
6+
import sys
7+
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
8+
9+
from src.detectface import detectface
10+
11+
class DetectFaceNoFaceTest(unittest.TestCase):
12+
def test_no_face_returns_false(self):
13+
# Create a blank image with no faces
14+
img = np.zeros((224, 224, 3), dtype=np.uint8)
15+
# Change working directory so cascade path resolves
16+
cwd = os.getcwd()
17+
try:
18+
os.chdir(os.path.join(cwd, 'restapi', 'memegen'))
19+
self.assertFalse(detectface(img))
20+
finally:
21+
os.chdir(cwd)
22+
23+
if __name__ == '__main__':
24+
unittest.main()

0 commit comments

Comments
 (0)