python实现两张图片的像素融合
更新时间:2019年02月23日 14:19:08 作者:JY-Justin
这篇文章主要为大家详细介绍了python实现两张图片的像素融合,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文实例为大家分享了python实现两张图片像素融合的具体代码,供大家参考,具体内容如下
通过计算两张图片的颜色直方图特征,利用直方图对图片的颜色进行融合。
import numpy as np
import cv2
from PIL import Image,ExifTags
def calcMeanAndVariance(img):
row=img.shape[0]
col=img.shape[1]
#channel=img.shape[2]
total=row*col
print (row,col,total)
mean=np.zeros((3))
variance=np.zeros((3))
sum=np.zeros((3))
for i in range(row):
for j in range(col):
sum[0]+=img[i][j][0]
sum[1]+=img[i][j][1]
sum[2]+=img[i][j][2]
mean[0]=sum[0]/total
mean[1]=sum[1]/total
mean[2]=sum[2]/total
sum=np.zeros((3))
for i in range(row):
for j in range(col):
sum[0]=np.square(img[i][j][0]-mean[0])
sum[1]=np.square(img[i][j][1]-mean[1])
sum[2]=np.square(img[i][j][2]-mean[2])
variance[0]=np.sqrt(sum[0]/total)
variance[1]=np.sqrt(sum[1]/total)
variance[2]=np.sqrt(sum[2]/total)
print (mean,variance)
return mean,variance
def cololTransit(img1,img2):
image1 = cv2.cvtColor(img1, cv2.COLOR_BGR2LAB)
image2=cv2.cvtColor(img2, cv2.COLOR_BGR2LAB)
mean1,variance1=calcMeanAndVariance(image1)
mean2,variance2=calcMeanAndVariance(image2)
#print (mean1,variance1)
radio=np.zeros((3))
radio[0]=variance2[0]/variance1[0]
radio[1]=variance2[1]/variance1[1]
radio[2]=variance2[2]/variance1[2]
print('test', radio)
row=image1.shape[0]
col=image1.shape[1]
for i in range(row):
for j in range(col):
image1[i][j][0]=min(255,max(0,radio[0]*(image1[i][j][0]-mean1[0])+mean2[0]))
image1[i][j][1]=min(255,max(0,radio[1]*(image1[i][j][1]-mean1[1])+mean2[1]))
image1[i][j][2]=min(255,max(0,radio[2]*(image1[i][j][2]-mean1[2])+mean2[2]))
image = cv2.cvtColor(image1, cv2.COLOR_BGR2LAB)
return image
if __name__=='__main__':
img1=cv2.imread('1.jpg')
img2=cv2.imread('2.jpg')
cv2.namedWindow('src')
cv2.namedWindow('dst')
#cv2.resizeWindow('src',500,500)
#cv2.resizeWindow('dst',500,500)
cv2.imshow('src',img1)
cv2.imshow('dst',img2)
cv2.waitKey()
cv2.destroyAllWindows()
img=cololTransit(img1,img2)
cv2.namedWindow('result')
cv2.imshow('result',img)
cv2.waitKey()
cv2.destroyAllWindows()
#print (img)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
利用Pycharm将python文件打包为exe文件的超详细教程(附带设置文件图标)
在日常使用pycharm写好程序后,如何将程序打包为exe文件呢,下面这篇文章主要给大家介绍了关于利用Pycharm将python文件打包为exe文件的超详细教程,附带设置文件图标,需要的朋友可以参考下2022-08-08
使用Python爬取小姐姐图片(beautifulsoup法)
这篇文章主要介绍了Python爬取小姐姐图片(beautifulsoup法),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2021-02-02
Django-simple-captcha验证码包使用方法详解
这篇文章主要介绍了Django-simple-captcha验证码包使用方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2020-11-11
Pytorch的torch.nn.embedding()如何实现词嵌入层
这篇文章主要介绍了Pytorch的torch.nn.embedding()如何实现词嵌入层问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-02-02


最新评论