Initial commit
commit
7b895209e9
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,30 @@
|
|||
import cv2
|
||||
import sys
|
||||
from popeize import popeize
|
||||
|
||||
# Get user supplied values
|
||||
try:
|
||||
cascPath = sys.argv[1]
|
||||
except IndexError:
|
||||
cascPath = 'features/haarcascade_frontalface_default.xml'
|
||||
|
||||
video_capture = cv2.VideoCapture(0)
|
||||
|
||||
# Create the haar cascade
|
||||
faceCascade = cv2.CascadeClassifier(cascPath)
|
||||
|
||||
# Read the image
|
||||
papaj = cv2.imread("zoltamorda.png", -1)
|
||||
|
||||
while True:
|
||||
ret, image = video_capture.read()
|
||||
|
||||
popeize(faceCascade, image, papaj, 1.3)
|
||||
|
||||
cv2.imshow("Video", image)
|
||||
|
||||
if cv2.waitKey(1) & 0xFF == ord('q'):
|
||||
break
|
||||
|
||||
video_capture.release()
|
||||
cv2.destroyAllWindows()
|
|
@ -0,0 +1,61 @@
|
|||
import cv2
|
||||
import sys
|
||||
|
||||
def blit(l_img, s_img, x_offset, y_offset):
|
||||
for c in range(0, 3):
|
||||
l_img[y_offset:y_offset+s_img.shape[0], x_offset:x_offset+s_img.shape[1], c] = s_img[:,:,c] * (s_img[:,:,3]/255.0) + l_img[y_offset:y_offset+s_img.shape[0], x_offset:x_offset+s_img.shape[1], c] * (1.0 - s_img[:,:,3]/255.0)
|
||||
|
||||
def downscale(img, width, height):
|
||||
factor = min(1.0*height/img.shape[0], 1.0*width/img.shape[1])
|
||||
return cv2.resize(img, None, None, factor, factor)
|
||||
|
||||
def popeize(faceCascade, image, papaj, faceScale=1.5):
|
||||
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
|
||||
|
||||
# Detect faces in the image
|
||||
faces = faceCascade.detectMultiScale(gray, faceScale, 5)
|
||||
|
||||
print "Found {0} faces!".format(len(faces))
|
||||
|
||||
# Draw a rectangle around the faces
|
||||
for (x, y, w, h) in faces:
|
||||
factor = min(1.0*h/papaj.shape[0], 1.0*w/papaj.shape[1]) * 1.3
|
||||
scaledpapaj = cv2.resize(papaj, None, None, factor, factor)
|
||||
dx = x + (w/2) - scaledpapaj.shape[1]/2
|
||||
dy = y + (h/2) - scaledpapaj.shape[0]/2
|
||||
|
||||
print dx, dy, factor
|
||||
|
||||
try:
|
||||
blit(image, scaledpapaj, dx, dy)
|
||||
except Exception as e:
|
||||
print e, dx, dy, factor
|
||||
#cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2)
|
||||
|
||||
if __name__ == '__main__':
|
||||
imagePath = sys.argv[1]
|
||||
cascPath = sys.argv[2]
|
||||
|
||||
# Create the haar cascade
|
||||
faceCascade = cv2.CascadeClassifier(cascPath)
|
||||
|
||||
# Read the image
|
||||
image = cv2.imread(imagePath)
|
||||
papaj = cv2.imread("zoltamorda.png", -1)
|
||||
|
||||
cv2.namedWindow("image")
|
||||
|
||||
def trackbarChanged(value):
|
||||
image = cv2.imread(imagePath)
|
||||
popeize(faceCascade, image, papaj, 1.1 + value/100.0)
|
||||
cv2.imshow("image", downscale(image, 1024, 768))
|
||||
print 'showed'
|
||||
|
||||
cv2.createTrackbar("scale", "image", 0, 300, trackbarChanged)
|
||||
|
||||
popeize(faceCascade, image, papaj, 1.1)
|
||||
cv2.imwrite("output.jpg", image)
|
||||
cv2.imshow("image", downscale(image, 1024, 768))
|
||||
|
||||
while cv2.waitKey(0) & 0xff != ord('q'):
|
||||
pass
|
|
@ -0,0 +1,43 @@
|
|||
"""
|
||||
usage: mitmdump -T --anticache --host -s popeproxy.py
|
||||
"""
|
||||
|
||||
from libmproxy.protocol.http import decoded
|
||||
import cv2
|
||||
import sys
|
||||
import os
|
||||
import numpy as np
|
||||
|
||||
sys.path.insert(0, os.getcwd())
|
||||
|
||||
import popeize
|
||||
|
||||
papaj = cv2.imread("zoltamorda.png", -1)
|
||||
faceCascade = cv2.CascadeClassifier('features/haarcascade_frontalface_default.xml')
|
||||
|
||||
types = {
|
||||
'image/jpeg': '.jpg',
|
||||
'image/png': '.png',
|
||||
}
|
||||
|
||||
|
||||
def response(context, flow):
|
||||
if 'content-type' not in flow.response.headers:
|
||||
return
|
||||
|
||||
ctype = flow.response.headers['content-type'][0]
|
||||
|
||||
if ctype not in types:
|
||||
return
|
||||
|
||||
with decoded(flow.response):
|
||||
image = cv2.imdecode(np.fromstring(flow.response.content,
|
||||
dtype=np.uint8), -1)
|
||||
popeize.popeize(faceCascade, image, papaj, 1.1)
|
||||
success, encimg = cv2.imencode(types[ctype], image)
|
||||
|
||||
if success:
|
||||
flow.response.content = encimg.tostring()
|
||||
|
||||
print '*'*20, 'length', len(flow.reply.obj.response.content)
|
||||
print '*'*20, 'type', ctype
|
Binary file not shown.
After Width: | Height: | Size: 59 KiB |
Loading…
Reference in New Issue