图像融合与图像镜像

  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()

  横向:

# 横生成镜像
    mirror_h = int(h / 2)
    for j in range(0, w):
        for i in range(0, mirror_h):
            img[j, i, :] = img[h-j-1, i, :]
    cv2.namedWindow('img')
    cv2.imshow('img', img)
    cv2.waitKey()
    cv2.destroyAllWindows()

  

  

 

posted @ 2020-03-13 13:12  King~~~  阅读(392)  评论(0)    收藏  举报