#!/usr/bin/env python 
# coding=utf-8
#1.编译器声明和2.编码格式声明
#1:为了防止用户没有将python安装在默认的/usr/bin目录，系统会先从env(系统环境变量)里查找python的安装路径，再调用对应路径下的解析器完成操作，也可以指定python3
#2:Python.X 源码文件默认使用utf-8编码，可以正常解析中文，一般而言，都会声明为utf-8编码

import cv2 #引用OpenCV功能包
import numpy as np #引用数组功能包

#读取图片
img_1 = cv2.imread('2.ImageMerge_1.jpg')
img_2 = cv2.imread('2.ImageMerge_2.jpg')

#获取图片信息
img_1_height, img_1_width, img_1_channels = img_1.shape
img_2_height, img_2_width, img_2_channels = img_2.shape

#设定融合图片的高度、宽度
img_merged_height=img_1_height 
img_merged_width=img_1_width  
if(img_2_height>img_1_height):img_merged_height=img_2_height
if(img_2_width>img_1_width):  img_merged_width=img_2_width

#创建融合图片对象
img_merged = np.zeros((img_merged_height, img_merged_width, 3), dtype=np.uint8)

#将img_1赋值在融合图片大小的画幅中并居中显示保存为img_1_new
img_1_new=np.zeros((img_merged_height, img_merged_width, 3), dtype=np.uint8)
x_bias_1=int((img_merged_width-img_1_width)/2)
y_bias_1=int((img_merged_height-img_1_height)/2)
for col in range(img_1_width):   
     for row in range(img_1_height):
          img_1_new[row+y_bias_1, col+x_bias_1]=img_1[row, col]
          
#将img_2赋值在融合图片大小的画幅中并居中显示保存为img_2_new
img_2_new=np.zeros((img_merged_height, img_merged_width, 3), dtype=np.uint8)
x_bias_2=int((img_merged_width-img_2_width)/2)
y_bias_2=int((img_merged_height-img_2_height)/2)
for col in range(img_2_width):   
     for row in range(img_2_height):
          img_2_new[row+y_bias_2, col+x_bias_2]=img_2[row, col]

#将img_1_new与img_2_new融合并赋值给img_merged
for col in range(img_merged_width):   
     for row in range(img_merged_height):
              img_merged[row, col]= (img_1_new[row, col]/2+img_2_new[row, col]/2)

Quit=0 #是否继续运行标志位
#提示停止方法
print ('Press key "Q" to stop.')

while Quit==0:
     keycode=cv2.waitKey(3) #每3ms刷新一次图片，同时读取3ms内键盘的输入
     if(keycode==ord('Q')): #如果按下“Q”键，停止运行标志位置1，调出while循环，程序停止运行
        Quit=1  
     #窗口显示图片
     cv2.imshow("img_1", img_1)
     cv2.imshow("img_2", img_2)
     cv2.imshow("img_1_new", img_1_new)
     cv2.imshow("img_2_new", img_2_new)
     cv2.imshow("img_merged", img_merged)
     
print ('Quitted!') #提示程序已停止
cv2.destroyAllWindows() #程序停止前关闭所有窗口
cv2.imwrite('2.ImageMerge_merged.jpg', img_merged) #保存融合图片
