Add Java and Python code for cascade classifier and HDR tutorials.
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
from __future__ import print_function
|
||||
import cv2 as cv
|
||||
import argparse
|
||||
|
||||
def detectAndDisplay(frame):
|
||||
frame_gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)
|
||||
frame_gray = cv.equalizeHist(frame_gray)
|
||||
|
||||
#-- Detect faces
|
||||
faces = face_cascade.detectMultiScale(frame_gray)
|
||||
for (x,y,w,h) in faces:
|
||||
center = (x + w//2, y + h//2)
|
||||
frame = cv.ellipse(frame, center, (w//2, h//2), 0, 0, 360, (255, 0, 255), 4)
|
||||
|
||||
faceROI = frame_gray[y:y+h,x:x+w]
|
||||
#-- In each face, detect eyes
|
||||
eyes = eyes_cascade.detectMultiScale(faceROI)
|
||||
for (x2,y2,w2,h2) in eyes:
|
||||
eye_center = (x + x2 + w2//2, y + y2 + h2//2)
|
||||
radius = int(round((w2 + h2)*0.25))
|
||||
frame = cv.circle(frame, eye_center, radius, (255, 0, 0 ), 4)
|
||||
|
||||
cv.imshow('Capture - Face detection', frame)
|
||||
|
||||
parser = argparse.ArgumentParser(description='Code for Cascade Classifier tutorial.')
|
||||
parser.add_argument('--face_cascade', help='Path to face cascade.', default='../../data/haarcascades/haarcascade_frontalface_alt.xml')
|
||||
parser.add_argument('--eyes_cascade', help='Path to eyes cascade.', default='../../data/haarcascades/haarcascade_eye_tree_eyeglasses.xml')
|
||||
parser.add_argument('--camera', help='Camera devide number.', type=int, default=0)
|
||||
args = parser.parse_args()
|
||||
|
||||
face_cascade_name = args.face_cascade
|
||||
eyes_cascade_name = args.eyes_cascade
|
||||
|
||||
face_cascade = cv.CascadeClassifier()
|
||||
eyes_cascade = cv.CascadeClassifier()
|
||||
|
||||
#-- 1. Load the cascades
|
||||
if not face_cascade.load(face_cascade_name):
|
||||
print('--(!)Error loading face cascade')
|
||||
exit(0)
|
||||
if not eyes_cascade.load(eyes_cascade_name):
|
||||
print('--(!)Error loading eyes cascade')
|
||||
exit(0)
|
||||
|
||||
camera_device = args.camera
|
||||
#-- 2. Read the video stream
|
||||
cap = cv.VideoCapture(camera_device)
|
||||
if not cap.isOpened:
|
||||
print('--(!)Error opening video capture')
|
||||
exit(0)
|
||||
|
||||
while True:
|
||||
ret, frame = cap.read()
|
||||
if frame is None:
|
||||
print('--(!) No captured frame -- Break!')
|
||||
break
|
||||
|
||||
detectAndDisplay(frame)
|
||||
|
||||
if cv.waitKey(10) == 27:
|
||||
break
|
||||
@@ -0,0 +1,56 @@
|
||||
from __future__ import print_function
|
||||
from __future__ import division
|
||||
import cv2 as cv
|
||||
import numpy as np
|
||||
import argparse
|
||||
import os
|
||||
|
||||
def loadExposureSeq(path):
|
||||
images = []
|
||||
times = []
|
||||
with open(os.path.join(path, 'list.txt')) as f:
|
||||
content = f.readlines()
|
||||
for line in content:
|
||||
tokens = line.split()
|
||||
images.append(cv.imread(os.path.join(path, tokens[0])))
|
||||
times.append(1 / float(tokens[1]))
|
||||
|
||||
return images, np.asarray(times, dtype=np.float32)
|
||||
|
||||
parser = argparse.ArgumentParser(description='Code for High Dynamic Range Imaging tutorial.')
|
||||
parser.add_argument('--input', type=str, help='Path to the directory that contains images and exposure times.')
|
||||
args = parser.parse_args()
|
||||
|
||||
if not args.input:
|
||||
parser.print_help()
|
||||
exit(0)
|
||||
|
||||
## [Load images and exposure times]
|
||||
images, times = loadExposureSeq(args.input)
|
||||
## [Load images and exposure times]
|
||||
|
||||
## [Estimate camera response]
|
||||
calibrate = cv.createCalibrateDebevec()
|
||||
response = calibrate.process(images, times)
|
||||
## [Estimate camera response]
|
||||
|
||||
## [Make HDR image]
|
||||
merge_debevec = cv.createMergeDebevec()
|
||||
hdr = merge_debevec.process(images, times, response)
|
||||
## [Make HDR image]
|
||||
|
||||
## [Tonemap HDR image]
|
||||
tonemap = cv.createTonemapDurand(2.2)
|
||||
ldr = tonemap.process(hdr)
|
||||
## [Tonemap HDR image]
|
||||
|
||||
## [Perform exposure fusion]
|
||||
merge_mertens = cv.createMergeMertens()
|
||||
fusion = merge_mertens.process(images)
|
||||
## [Perform exposure fusion]
|
||||
|
||||
## [Write results]
|
||||
cv.imwrite('fusion.png', fusion * 255)
|
||||
cv.imwrite('ldr.png', ldr * 255)
|
||||
cv.imwrite('hdr.hdr', hdr)
|
||||
## [Write results]
|
||||
Reference in New Issue
Block a user