问题描述:求出一张图片的反色和补色
OpenCV&python实现
重要公式:补色公式:max(r,g,b)+min(r,g,b)-[r,g,b]
反色公式:[255, 255, 255] - [r, g, b]或255-img[i][j]
import cv2
import numpy as np
import math
#求补色函数
def bu_Color(img):
height, width, channels = img.shape
bu_Color_img=img.copy()
for i in range(height):
for j in range(width):
#求补色公式:max(r,g,b)+min(r,g,b)-[r,g,b]
bu_Color_img[i,j] = (img[i][j].max()+img[i][j].min())-img[i][j]
return bu_Color_img
#求反色函数
def fan_Color(img):
height, width, channels = img.shape
fan_Color_img = img.copy()
for i in range(height):
for j in range(width):
#求反色公式[255, 255, 255] - [r, g, b]或255-img[i][j]
fan_Color_img[i,j] = (255 - img[i,j][0],255 -img[i][j][1],255-img[i][j][2])
return fan_Color_img
#读入图片
img1 = cv2.imread("F:\\erciyuan.jpg")
#三个显示窗口
cv2.namedWindow('Original')
cv2.namedWindow('bu_Color_img')
cv2.namedWindow('fan_Color_img')
#显示原图,补色图,反色图
Bu_Color_img = bu_Color(img1)
Fan_Color_img = fan_Color(img1)
cv2.imshow("Original",img1)
cv2.imshow("bu_Color_img",Bu_Color_img)
cv2.imshow("fan_Color_img",Fan_Color_img)
cv2.waitKey(0)
原图
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200402225850748.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNzU2NDg2,size_16,color_FFFFFF,t_70)
反色图
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200402225924557.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNzU2NDg2,size_16,color_FFFFFF,t_70)
补色图
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200402230118559.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNzU2NDg2,size_16,color_FFFFFF,t_70)