https://www.cnblogs.com/likethanlove/p/6003677.html

Reinhard颜色迁移算法的过程很简单,流程如下,细节部分见原文,题目为color transfer between images:

  1. 将参考图片和目标图片转换到LAB空间下
  2. 得到参考图片和目标图片的均值和标准差
  3. 对目标图片的每一个像素值,减去目标图像均值然后乘上参考图片和目标图片标准差的比值,再加上参考图像均值
  4. 将目标图片转换到RGB空间

将RGB图片转换到LAB空间很重要,因为LAB空间能降低三原色之间的相关性,如果不转换,结果会有很大的不同

# -*- coding: utf-8 -*-import cv2
import numpy as np
image = cv2.imread('des.jpg')
image = cv2.cvtColor(image,cv2.COLOR_BGR2LAB)
original = cv2.imread('src.jpg')
original = cv2.cvtColor(original,cv2.COLOR_BGR2LAB)def getavgstd(image):    //得到均值和标准差avg = []std = []image_avg_l = np.mean(image[:,:,0])image_std_l = np.std(image[:,:,0])image_avg_a = np.mean(image[:,:,1])image_std_a = np.std(image[:,:,1])image_avg_b = np.mean(image[:,:,2])image_std_b = np.std(image[:,:,2])avg.append(image_avg_l)avg.append(image_avg_a)avg.append(image_avg_b)std.append(image_std_l)std.append(image_std_a)std.append(image_std_b)return (avg,std)image_avg,image_std = getavgstd(image)
original_avg,original_std = getavgstd(original)height,width,channel = image.shape
for i in range(0,height):for j in range(0,width):for k in range(0,channel):t = image[i,j,k]t = (t-image_avg[k])*(original_std[k]/image_std[k]) + original_avg[k]t = 0 if t<0 else tt = 255 if t>255 else timage[i,j,k] = t
image = cv2.cvtColor(image,cv2.COLOR_LAB2BGR)
cv2.imwrite('out.jpg',image)

python opencv 实现Reinhard颜色迁移算法相关推荐

  1. python opencv 检测特定颜色

    python opencv 检测特定颜色 import cv2 import numpy as npcap = cv2.VideoCapture(0)# set blue thresh 设置HSV中蓝 ...

  2. 基于GMM模型的图像分割与颜色迁移算法

    在之前的博客中,我们已经介绍过高斯混合模型(GMM)的一些基础知识,链接: Gaussian Mixture Model:混合高斯模型介绍_程序猿老甘的博客-CSDN博客 在该博客中,我们提到了贾佳亚 ...

  3. 【Python+OpenCV】识别颜色方块并提取轮廓

    前一阵在做机械臂下井字棋的综合设计,在网上直接购买了一套机械臂装置(包括机械臂,摄像头,树莓派,花费1600元),机械臂不是很高级.精度很低.源码里提供识别红绿蓝三种颜色方块的识别和抓取. 经过多次尝 ...

  4. python opencv立体测距 立体匹配BM算法

    立体标定 应用标定数据 转换成深度图 标定 在开始之前,需要准备的当然是两个摄相头,根据你的需求将两个摄像头进行相对位置的固定,我是按平行来进行固定的(如果为了追求两个双目图像更高的生命度,也可以将其 ...

  5. python opencv入门 Meanshift 和 Camshift 算法(40)

    内容来自OpenCV-Python Tutorials 自己翻译整理 目标: 在本章,学习Meanshift算法和Camshift算法来寻找和追踪视频中的目标物体. Meanshift算法: mean ...

  6. (自己编写函数)Python + Opencv 图像边缘检测(模糊算法【老师给的ppt中原理是这样的,但是还有很多不明白,有很多参数老师没说怎么算,只说了每张图片不一样】)

    实验原理 1.首先,用重心法模糊推理图像中任意一像素点的边缘隶属方向,取其最大隶属度的方向为边缘隶属方向. 2.然后,在边缘隶属方向上根据像素点附近灰度分布的特点模糊推理该点的边缘隶属度,进而实现边缘 ...

  7. python+opencv实现文字颜色识别与标定

    最近接了一个比较简单的图像处理的单子,花了一点时间随便写了一下: 数据集客户没有是自己随便创建的: 程序如下: """Code creation time:Septemb ...

  8. python opencv选取特定颜色区域

    import cv2 import numpy as np # 回调函数,x表示滑块的位置,本例暂不使用 def nothing(x):pass def ColorDetector(img, lowe ...

  9. 【Python——OpenCV】HSV颜色识别-HSV基本颜色分量范围

    一般对颜色空间的图像进行有效处理都是在HSV空间进行的,然后对于基本色中对应的HSV分量需要给定一个严格的范围,下面是通过实验计算的模糊范围(准确的范围在网上都没有给出). H:  0 - 180 S ...

最新文章

  1. 环形链表解法一:快追慢
  2. ubuntu上的wordpress文章的本地存储位置
  3. Java 集合系列12之 Hashtable详细介绍(源码解析)和使用示例
  4. 20061008: IntelliJ Idea 6
  5. 经常玩电脑正确的坐姿_「姿态训练」保持良好坐姿的八个步骤
  6. Codeforces Round #366 (Div. 1):Ant Man(贪心)
  7. 简单的学生库管理系统
  8. DCMTK开发笔记(一):我的第一个DCMTK demo
  9. word可以画神经网络图吗,如何画神经网络结构图
  10. 算法分析稳定匹配问题c语言,算法-稳定匹配StableMatching
  11. 英特尔Genuino101中国首发,共享经济式的创客生态圈新玩法
  12. 板内盘中孔设计狂飙,细密间距线路中招
  13. GIt登录不了,报错:Whoops, something went wrong on our end.
  14. html批量打印,web页面的单页打印以及批量打印实现方法
  15. 计算机音乐制作手册,计算机音乐制作手册
  16. 世界上有两种公众号,我坚持做第二种
  17. Android 微信登录详细流程
  18. vue使用百度地图,添加线路、站点,简易封装,方便修改(vue使用百度地图实现添加多条线路、多个站点)
  19. Collectors,Collection,Collections傻傻分不清楚
  20. [工具]Vscode远程开发与远程调试

热门文章

  1. linux7.4安装语言包,CentOS 7.4安装时报错最简单最直接的解决办法
  2. linux init.d添加启动脚本 ln,linux编写可运行的shell脚本并在其他目录创建ln连接与设置开机启动...
  3. 卡波姆对皮肤的作用副作用_卡波姆在化妆品中的作用
  4. 神经网络和深度学习简史(三)
  5. 数据类型转换、==和===的判断
  6. Centos 7.4 中http-2.4 的基本实现和 https 的实现
  7. RxSwift 案例学习(一)
  8. Linux内存管理学习3 —— head.S中的段页表的建立
  9. 【REACT NATIVE 系列教程之四】刷新组件RENDER(重新渲染)的三种方式详解
  10. mybatis学习笔记(13)-延迟加载