def applyTransform(self):
self.framing(self.path)
self.height,self.width=cv2.imread("Frames/1.jpg").shape[:2]
# write transformed video
out = cv2.VideoWriter("changedOutput.mp4",cv.CV_FOURCC('a','v','c','1'), 30.0, (self.width, self.height))
folder=self.sort_files()
# write Transformed video frames
for i in folder:
pic="Frames/"+str(i)+".jpg"
Newpic=cv2.imread(pic,0)
frame=cv2.Canny(Newpic,100,200)
cv2.imwrite(pic,frame)
Newpic=cv2.imread(pic)
img=cv2.flip(Newpic,0)
out.write(img)
out.release()
# Writing output video file
python类cv()的实例源码
def recog(md,img):
global face_rect
src_path='./regist_pic/'+str(md)
while True:
rects=face_rect
if rects:
#img?????????
if rects[0][2]<rects[0][3]:
cv.SetImageROI(img,(rects[0][0]+10, rects[0][1]+10,rects[0][2]-100,rects[0][2]-100))
else:
cv.SetImageROI(img,(rects[0][0]+10, rects[0][1]+10,rects[0][3]-100,rects[0][3]-100))
#?img??????
dst=cv.CreateImage((224,224), 8, 3)
cv.Resize(img,dst,cv.CV_INTER_LINEAR)
cv.SaveImage('./temp.bmp',dst)
#??5??????,?????????????,?????????,???scores?
scores=[]
for i in range(5):
res=compar_pic('./temp.bmp',src_path+'/'+str(i)+'.bmp')
scores.append(res)
print res
#?scores???
result=avg(scores)
print 'avg is :',avg(scores)
return result
def show_img():
global face_rect
#????????????????
while True:
img = cv.QueryFrame(cam)# ????????
#????????
src=cv.CreateImage((img.width, img.height), 8, 3)
cv.Resize(img,src,cv.CV_INTER_LINEAR)
#??????
gray=cv.CreateImage((img.width, img.height), 8, 1)
cv.CvtColor(img, gray, cv.CV_BGR2GRAY)#?rgb???????
cv.EqualizeHist(gray,gray)#????????????
rects = detect(gray, cascade)#???????????????????????????
face_rect=rects
#?????????
draw_rects(src, rects, (0, 255, 0))
#???????
cv.ShowImage('DeepFace Wang_jun_qian', src)
cv2.waitKey(5) == 27
cv2.destroyAllWindows()
def save_clip_img():
img=cv.LoadImage('static/InterceptedIMG/clip.jpg')
vertical_distance_decimal,vertical_distance_integer = math.modf(float(640)/19)
parallel_distance_decimal,parallel_distance_integer = math.modf(float(480)/19)
#print vertical_distance_decimal,vertical_distance_integer,parallel_distance_decimal,parallel_distance_integer
draw_img = cv2.imread('static/InterceptedIMG/clip.jpg')
for i in range(19):
for j in range(19):
cv2.rectangle(draw_img,(0+int(33.68*i),int(25.26*j)),(int(33.68*(i+1)),int(25.26*(j+1))),(0,255,0),1)
cv2.imshow('image',draw_img)
k = cv2.waitKey(0) & 0xFF
if k == 27:
cv2.destroyAllWindows()
for i in range(19):
for j in range(19):
wn_position =(int(vertical_distance_integer*i)+int(vertical_distance_decimal*i),int(parallel_distance_integer*j)+int(parallel_distance_decimal*j))
es_position =(int(vertical_distance_integer*(i+1)+int(vertical_distance_decimal*i)),int(parallel_distance_integer*(j+1))+int(parallel_distance_decimal*j))
img_backup=cv.CloneImage(img)
cv.SetImageROI(img_backup,(wn_position[0],wn_position[1],33,25))
cv.SaveImage('static/ClippedImg/%d_%d.jpg'%(j,i),img_backup)
def read(self,training=False,validation=False):
pos=int(self.currpos)
ret,image=self.video.read()
count=0
while True:
if ret:
self.currpos+=1
update=False
else:
self.currpos=0
update=True
if update:
self.video.set(cv.CV_CAP_PROP_POS_FRAMES,self.currpos)
if ret and (validation and is_validation_frame(pos) or training and is_training_frame(pos) or not training and not validation):
return ret,image,pos
else:
pos=int(self.currpos)
ret,image=self.video.read()
count+=1
if count>=1000:
print 'read retry timeout'
os._exit(-1)
def read(self,training=False,validation=False):
pos=int(self.currpos)
ret,image=self.video.read()
count=0
while True:
if ret:
self.currpos+=1
update=False
#if shuffle and random.random()<0.1 or not ret:
# update=True
# self.currpos=self.beginpos+int(random.random()*(self.endpos-self.beginpos))
if self.currpos>=self.endpos:
update=True
self.currpos=self.beginpos
if update:
self.video.set(cv.CV_CAP_PROP_POS_FRAMES,self.currpos)
if ret and (validation and is_validation_frame(pos) or training and is_training_frame(pos) or not training and not validation):
return ret,image,pos
else:
pos=int(self.currpos)
ret,image=self.video.read()
count+=1
if count>=1000:
print 'read retry timeout'
os._exit(-1)
def __init__(self):
self.norm_rgb=np.zeros((600,800,3),np.uint8)
self.dst=np.zeros((600,800),np.uint8)
self.b=0
self.g=0
self.r=0
self.lb=0
self.lg=0
self.lr=0
self.m=np.zeros((600,800),np.uint8)
#self.win=cv2.namedWindow("detect")
#self.dst=cv.CreateImage((800,600),8,1)
#cv2.createTrackbar("blue", "detect",0,255,self.change_b)
#cv2.createTrackbar("green","detect",0,255,self.change_g)
#cv2.createTrackbar("red","detect",0,255,self.change_r)
#cv2.createTrackbar("low_blue", "detect",0,255,self.change_lb)
#cv2.createTrackbar("low_green","detect",0,255,self.change_lg)
#cv2.createTrackbar("low_red","detect",0,255,self.change_lr)
def detect_shirt(self):
#self.dst=cv2.inRange(self.norm_rgb,np.array([self.lb,self.lg,self.lr],np.uint8),np.array([self.b,self.g,self.r],np.uint8))
self.dst=cv2.inRange(self.norm_rgb,np.array([20,20,20],np.uint8),np.array([255,110,80],np.uint8))
cv2.threshold(self.dst,0,255,cv2.THRESH_OTSU+cv2.THRESH_BINARY)
fg=cv2.erode(self.dst,None,iterations=2)
#cv2.imshow("fore",fg)
bg=cv2.dilate(self.dst,None,iterations=3)
_,bg=cv2.threshold(bg, 1,128,1)
#cv2.imshow("back",bg)
mark=cv2.add(fg,bg)
mark32=np.int32(mark)
cv2.watershed(self.norm_rgb,mark32)
self.m=cv2.convertScaleAbs(mark32)
_,self.m=cv2.threshold(self.m,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
#cv2.imshow("final_tshirt",self.m)
cntr,h=cv2.findContours(self.m,cv2.cv.CV_RETR_EXTERNAL,cv2.cv.CV_CHAIN_APPROX_SIMPLE)
return self.m,cntr
def recog(md,img):
global face_rect
src_path='./regist_pic/'+str(md)
while True:
rects=face_rect
if rects:
#img?????????
if rects[0][2]<rects[0][3]:
cv.SetImageROI(img,(rects[0][0]+10, rects[0][1]+10,rects[0][2]-100,rects[0][2]-100))
else:
cv.SetImageROI(img,(rects[0][0]+10, rects[0][1]+10,rects[0][3]-100,rects[0][3]-100))
#?img??????
dst=cv.CreateImage((224,224), 8, 3)
cv.Resize(img,dst,cv.CV_INTER_LINEAR)
cv.SaveImage('./temp.bmp',dst)
#??5??????,?????????????,?????????,???scores?
scores=[]
for i in range(5):
res=compar_pic('./temp.bmp',src_path+'/'+str(i)+'.bmp')
scores.append(res)
print res
#?scores???
result=avg(scores)
print 'avg is :',avg(scores)
return result
def show_img():
global face_rect
#????????????????
while True:
img = cv.QueryFrame(cam)# ????????
#????????
src=cv.CreateImage((img.width, img.height), 8, 3)
cv.Resize(img,src,cv.CV_INTER_LINEAR)
#??????
gray=cv.CreateImage((img.width, img.height), 8, 1)
cv.CvtColor(img, gray, cv.CV_BGR2GRAY)#?rgb???????
cv.EqualizeHist(gray,gray)#????????????
rects = detect(gray, cascade)#???????????????????????????
face_rect=rects
#?????????
draw_rects(src, rects, (0, 255, 0))
#???????
cv.ShowImage('DeepFace Wang_jun_qian', src)
cv2.waitKey(5) == 27
cv2.destroyAllWindows()
def init_camera():
try:
# camera setup
camera = cv2.VideoCapture(cfg.video_src)
camera.set(cv.CV_CAP_PROP_FRAME_WIDTH, float(cfg.width))
camera.set(cv.CV_CAP_PROP_FRAME_HEIGHT, float(cfg.height))
return True, camera
except:
return False, False
def init_camera():
try:
# camera setup
camera = cv2.VideoCapture(cfg.video_src)
camera.set(cv.CV_CAP_PROP_FRAME_WIDTH, float(cfg.width))
camera.set(cv.CV_CAP_PROP_FRAME_HEIGHT, float(cfg.height))
return True, camera
except:
return False, False
def detect(img, cascade):
rects = cv.HaarDetectObjects(img, cascade, cv.CreateMemStorage(), 1.1, 2,cv.CV_HAAR_DO_CANNY_PRUNING, (255,255))#CV_HAAR_SCALE_IMAGE????????
if len(rects) == 0:
return []
result = []
#??????????result
for r in rects:
result.append((r[0][0], r[0][1], r[0][0]+r[0][2], r[0][1]+r[0][3]))
#??????????,?????300~500??
if result[0][2]> 300 and result[0][3] > 300 and result[0][2]< 500 and result[0][3] < 500:
return result
else:
return []
#???????
def draw_rects(img, rects, color):
if rects:
for i in rects:
cv.Rectangle(img, (int(rects[0][0]), int(rects[0][1])),(int(rects[0][2]),int(rects[0][3])),cv.CV_RGB(0, 255, 0), 1, 8, 0)#?????????
#????????
def register(path,img,rects):
if rects:
#?????N*N?,????
if rects[0][2]<rects[0][3]:
cv.SetImageROI(img,(rects[0][0]+10, rects[0][1]+10,rects[0][2]-50,rects[0][2]-50))
else:
cv.SetImageROI(img,(rects[0][0]+10, rects[0][1]+10,rects[0][3]-50,rects[0][3]-50))
dst=cv.CreateImage((224,224), 8, 3)
#????
cv.Resize(img,dst,cv.CV_INTER_LINEAR)
cv.SaveImage(path,dst)
#????????
def detect(img, cascade):
rects = cascade.detectMultiScale(img, scaleFactor=1.3, minNeighbors=4, minSize=(30, 30), flags = cv.CV_HAAR_SCALE_IMAGE)
if len(rects) == 0:
return []
rects[:,2:] += rects[:,:2]
return rects
def initialFraming(self,path):
global cap
global success
global frame
sampleIndex=0
cap = cv2.VideoCapture(path)
success,frame=cap.read(cv.CV_IMWRITE_JPEG_QUALITY)
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
#gray = cv2.GaussianBlur(gray, (21, 21), 0)
height,width = gray.shape[:2]
print "Dimension of the image is: ",height, width, (height*width)
samples = np.array([[0 for x in range(0,self.numberOfSamples)] for x in range(0,(height*width))])
tempArray = np.reshape(gray,(height*width)).T
samples[:,sampleIndex]= np.copy(tempArray)
sampleIndex+=1
while (success and sampleIndex!=(self.numberOfSamples)):
success,frame = cap.read(cv.CV_IMWRITE_JPEG_QUALITY)
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
#gray = cv2.GaussianBlur(gray, (21, 21), 0)
tempArray = (np.reshape(gray,(height*width))).T
samples[:,sampleIndex]= np.copy(tempArray)
sampleIndex+=1
return samples
def writeVideo(self):
height,width=cv2.imread("Frames/1.jpg").shape[:2]
out = cv2.VideoWriter("changedOutput.ogv",cv.CV_FOURCC('t','h','e','0'), 25.0, (width,height))
folder=self.sort_files()
for i in folder:
pic="Frames/"+str(i)+".jpg"
img=cv2.imread(pic)
out.write(img)
out.release()
def initialFraming(self,path):
global cap
global success
global frame
sampleIndex=0
cap = cv2.VideoCapture(path)
success,frame=cap.read(cv.CV_IMWRITE_JPEG_QUALITY)
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
gray = cv2.GaussianBlur(gray, (21, 21), 0)
height,width = gray.shape[:2]
print "Dimension of the image is: ",height, width, (height*width)
samples = np.array([[0 for x in range(0,self.numberOfSamples)] for x in range(0,(height*width))])
tempArray = np.reshape(gray,(height*width)).T
samples[:,sampleIndex]= np.copy(tempArray)
sampleIndex+=1
while (success and sampleIndex!=(self.numberOfSamples)):
success,frame = cap.read(cv.CV_IMWRITE_JPEG_QUALITY)
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
gray = cv2.GaussianBlur(gray, (21, 21), 0)
tempArray = (np.reshape(gray,(height*width))).T
samples[:,sampleIndex]= np.copy(tempArray)
sampleIndex+=1
return samples
def writeVideo(self):
height,width=cv2.imread("Frames/1.jpg").shape[:2]
out = cv2.VideoWriter("changedOutput.ogv",cv.CV_FOURCC('t','h','e','0'), 25.0, (width,height))
folder=self.sort_files()
for i in folder:
pic="Frames/"+str(i)+".jpg"
img=cv2.imread(pic)
out.write(img)
out.release()
def framing(self,path):
global FilePath, count
Newpath = FilePath + path
cap = cv2.VideoCapture(Newpath)
success,frame=cap.read(cv.CV_IMWRITE_JPEG_QUALITY) #handle of the Video Capture is required for obtaining frame.
while success:
cv2.imwrite("Images/%d.jpg" % count, frame) # save frame as JPEG file
count += 1
success,frame = cap.read(cv.CV_IMWRITE_JPEG_QUALITY) # to read the last frame
cap.release()
def framing(self,path):
cap = cv2.VideoCapture(path)
success,frame=cap.read(cv.CV_IMWRITE_JPEG_QUALITY) #handle of the Video Capture is required for obtaining frame.
count = 1
while success:
cv2.imwrite("Frames/%d.jpg" % count, frame) # save frame as JPEG file
count += 1
success,frame = cap.read(cv.CV_IMWRITE_JPEG_QUALITY) # to read the last frame
cap.release()
# select transformation
def writeOutputFile(self,output):
self.height,self.width=cv2.imread("Frames/1.jpg").shape[:2]
out = cv2.VideoWriter(output,cv.CV_FOURCC('a','v','c','1'), 30.0, (self.width, self.height))
folder=self.sort_files()
for i in folder:
pic="Frames/"+str(i)+".jpg"
img=cv2.imread(pic)
out.write(img)
out.release()
# Method to sort the files (here, frames!)
def iplimage_to_string(im, lang=None, psm=None):
if not OPENCV_AVAILABLE:
print ("OpenCV not Available")
return -1
else:
cv.SaveImage(TEMP_IMAGE, im)
txt = image_to_string(TEMP_IMAGE, lang, psm)
os.remove(TEMP_IMAGE)
return txt
def __init__(self,vurl,id):
print vurl
self.vurl=vurl
self.id=id
self.vcap=cv2.VideoCapture(vurl)
self.fps=self.vcap.get(cv.CV_CAP_PROP_FPS)
self.begin=time.time()
self.last=self.begin
self.image=None
self.ctime=time.time()
self.beginpos=0
self.endpos=MAXFRAMES
pos=int(v.get(cv.CV_CAP_PROP_POS_FRAMES))
ret,image=self.vcap.read()
if ret:
self.image=image.copy()
self.localshuffler=LocalShuffler(16,self.image.shape)
for i in range(16):
pos=int(v.get(cv.CV_CAP_PROP_POS_FRAMES))
ret,image=self.vcap.read()
assert ret
self.localshuffler.feed(image,0,pos)
thread.start_new_thread(self.backend,())
print 'ok'
else:
print 'skip: '+self.vurl
def backend(self):
while True:
if self.vcap is not None:
pos=int(v.get(cv.CV_CAP_PROP_POS_FRAMES))
ret,image=self.vcap.read()
if ret:
self.image=image.copy()
else:
print 'read fail: '+self.vurl
self.vcap=None
time.sleep(1.0/self.fps)
def read(self,training=False,validation=False):
if self.image is None:
return False,None
if validation:
return False,None
pos=int(v.get(cv.CV_CAP_PROP_POS_FRAMES))
image,ig,id=self.localshuffler.feed(self.image,0,pos)
self.image=None
return True,image,id
def shuffle2(self):
a=os.listdir(self.path)
filename=os.path.join(self.path,a[int(random.random()*len(a))])
self.video=cv2.VideoCapture(filename)
n=self.video.get(cv.CV_CAP_PROP_FRAME_COUNT)
self.currpos=int(random.random()*n)
self.video.set(cv.CV_CAP_PROP_POS_FRAMES,self.currpos)
def shuffle2(self):
self.currpos=self.beginpos+int(random.random()*(self.endpos-self.beginpos))
self.video.set(cv.CV_CAP_PROP_POS_FRAMES,self.currpos)
def detect_shirt2(self):
self.hsv=cv2.cvtColor(self.norm_rgb,cv.CV_BGR2HSV)
self.hue,s,_=cv2.split(self.hsv)
_,self.dst=cv2.threshold(self.hue,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
self.fg=cv2.erode(self.dst,None,iterations=3)
self.bg=cv2.dilate(self.dst,None,iterations=1)
_,self.bg=cv2.threshold(self.bg,1,128,1)
mark=cv2.add(self.fg,self.bg)
mark32=np.int32(mark)
cv2.watershed(self.norm_rgb,mark32)
m=cv2.convertScaleAbs(mark32)
_,m=cv2.threshold(m,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
cntr,h=cv2.findContours(m,cv.CV_RETR_EXTERNAL,cv.CV_CHAIN_APPROX_SIMPLE)
print len(cntr)
#print cntr[0].shape
#cntr[1].dtype=np.float32
#ret=cv2.contourArea(np.array(cntr[1]))
#print ret
#cntr[0].dtype=np.uint8
cv2.drawContours(m,cntr,-1,(255,255,255),3)
cv2.imshow("mask_fg",self.fg)
cv2.imshow("mask_bg",self.bg)
cv2.imshow("mark",m)