1.图像融合。将新图像的每个像素称为两个原图像中对应像素的平均值之和,即:将两个图像的像素值去50%后相加。为简化计算直接选取其中一个原图像做为新图像,设新图像矩阵为myimg2.
for y in range(0,sz2): for x in range(0,sz1): myimg2[y, x, :] = myimg1[y, x, :] * 0.5 +myimg2[y, x, :] * 0.5
完整代码:
#图像融合 import cv2 import numpy as np fn1 = ‘001.png‘ fn2 = ‘002.png‘ if __name__ == ‘__main__‘: print(‘working......‘) myimg1 = cv2.imread(fn1) myimg2 = cv2.imread(fn2) #取得图像的大小 w = myimg1.shape[1] h = myimg1.shape[0] sz1 = w sz2 = h for y in range(0,sz2): for x in range(0,sz1): myimg2[y, x, :] = myimg1[y, x, :] * 0.5 +myimg2[y, x, :] * 0.5 print(‘.‘) cv2.namedWindow(‘img2‘) cv2.imshow(‘img2‘,myimg2) cv2.waitKey() cv2.destroyAllWindows()
2.图像镜像。首先获取图像的宽度,将宽度的50%取整后作为图像的中线先;然后以中线为轴,将图像左边反向复制到图像右边,是图像最右边一列的像素点等于图像最左边的像素点。纵向的与之相反。将高度的50%取整后作为图像的横向中线,复制是是最先变一行的像素点值等于最上边一行的像素点值。
纵向镜像:
#纵向生成镜像 mirror_w = w/2 for j in range(0,h): for i in range(0,mirror_w): img[j,i,:]=img[j,w-i-1,:]
完整代码:
import cv2 import numpy as np fn = ‘001.png‘ if __name__ == ‘__main__‘: print(‘loading %s ...‘ % fn) img = cv2.imread(fn) w = img.shape[1] h = img.shape[0] #纵向生成镜像 mirror_w = int(w/2) for j in range(0, h): for i in range(0, mirror_w): img[j, i,:] = img[j, w-i-1,:] cv2.namedWindow(‘img‘) cv2.imshow(‘img‘, img) cv2.waitKey() cv2.destroyAllWindows()
原文:https://www.cnblogs.com/superSmall/p/12485882.html