多个图片拼接python实现(python实现两张图片的像素融合)
类别:脚本大全 浏览量:649
时间:2022-01-24 00:56:38 多个图片拼接python实现
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) |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持开心学习网。
原文链接:https://blog.csdn.net/weixin_38582851/article/details/80494205
您可能感兴趣
- python为什么要用多进程(对Python的多进程锁的使用方法详解)
- pythonsocket详细用法(Python中的Socket 与 ScoketServer 通信及遇到问题解决方法)
- python彩色字符视频代码(python将视频转换为全字符视频)
- python多线程有两个参数怎么传(python从子线程中获得返回值的方法)
- pythonlist类型教程(Python List cmp知识点总结)
- python协程详解(为什么你还不懂得怎么使用Python协程)
- python第三方库的使用方法和作用(Python第三方库face_recognition在windows上的安装过程)
- python的三维画图(python处理DICOM并计算三维模型体积)
- python中可以改变的数据类型(Python常见数据类型转换操作示例)
- pythonyield使用场景(Yii框架核心组件类实例详解)
- python抓取天气数据(Python实战之制作天气查询软件)
- python创建字典的代码(Python创建字典的八种方式)
- python怎样读取mysql数据(使用Python将Mysql的查询数据导出到文件的方法)
- python中的time时间模块使用知识(python实现简单日期工具类)
- python使用aes加密解密(python实现AES和RSA加解密的方法)
- python如何使用yield(YII2.0框架行为Behavior深入详解)
- 小米推出米兔儿童电话手表奥特曼版,799 元,支持微信 QQ(小米推出米兔儿童电话手表奥特曼版)
- 贾怀胤唱《白龙马》 炸场 了 没想到京剧还能这么玩(贾怀胤唱白龙马)
- 白龙马的改编学生版,快来看看(白龙马的改编学生版)
- 萌娃唱《白龙马》走红,那生动的小表情,网友直呼 简直是戏精(萌娃唱白龙马走红)
- 朱鹤松被不断认可,凤凰传奇玲花喊话岳云鹏,索要老朱演出门票(朱鹤松被不断认可)
- 元宵晚会槽点多,芒果台上来就假唱,岳云鹏不说相声改评书了(元宵晚会槽点多)
热门推荐
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9