#! /usr/bin/env python 
# -*- coding: utf-8 -*-

import os 
import cv2
import glob
import numpy as np
import scipy.io as sio
from show_fcnout import show_fcnout

def stitch(featfolder, savefolder, dirname):
	root_folder = '/data/lc/data/AMIDA13/mitoses_ground_truth/'
	show_fcnout(featfolder, dirname)
	for i in range(len(dirname)):
		filepath = root_folder + dirname[i] + '/*.csv'
		img = glob.glob(filepath)
		n = len(img)
		for j in range(n):
			imgname = img[j].split('/')[-1]
			stitchPatch(root_folder, dirname[i], imgname, featfolder, savefolder)
			stitchPatchImg(root_folder, dirname[i], imgname,savefolder)

def stitchPatch(root_folder, dir1, imgname, featfolder, savefolder):  
    # stitch the features of patches to feature of full image
	name = os.path.join(dir1, imgname)
	print 'name:%s\n' %(name)
	Im = os.path.join(featfolder, name[0:-4])
	I = [None]*16
	for i in range(9):
		dict1 = sio.loadmat(Im+'_0'+str(i+1)+'.mat')
		I[i] = dict1['feat']
	for i in range(9,16):
		dict2 = sio.loadmat(Im+'_'+str(i+1)+'.mat')
		I[i] = dict2['feat']
	A = np.zeros((4*500,4*500))
	for row in range(4):
		for col in range(4):
			A[row*500:(row+1)*500,col*500:(col+1)*500] = I[row*4+col]
	sio.savemat(savefolder+name[0:-4], {'A':np.mat(A)})

def stitchPatchImg(root_folder, dir1, imgname, savefolder):
    # stitch the visual feature map of patches to feature map of full image
	name = os.path.join(dir1, imgname[0:-4])
	imgfolder = '/data/lc/data/AMIDA13/SegMitos-out/AMIDA13/visualFCNTemp/'
	Im = imgfolder + name
	I = [None]*16
	for i in range(9):
		patch = cv2.imread(Im+'_0'+str(i+1)+'.bmp')
		I[i] = patch
	for i in range(9,16):
		patch = cv2.imread(Im+'_'+str(i+1)+'.bmp')
		I[i] = patch
	A = np.zeros((4*500,4*500,3))
	for row in range(4):
		for col in range(4):
			A[row*500:(row+1)*500,col*500:(col+1)*500] = I[row*4+col]

	savefolder = savefolder[0:-9]+'fullImg/'
	cv2.imwrite(savefolder+name+'.jpg', A)
	print savefolder + name + '.jpg'