import cv2 as cv
import numpy as np
def inverse_color(image):
height, width, temp = image.shape
img2 = image.copy()
for i in range(height):
for j in range(width):
img2[i, j] = (255 - image[i, j][0], 255 - image[i, j][1], 255 - image[i, j][2])
return img2
def complement_color(image):
height, width, temp = image.shape
img_3 = image.copy()
#img_2 = image.copy()
for i in range(height):
for j in range(width):
b = image[i, j][0]
g = image[i, j][1]
r = image[i, j][2]
maxrgb = max(r, g, b)
max1 = image[i, j].max()
min1 = image[i, j].min()
minrgb = min((min(r, g), b))
#img_2[i, j] = (maxrgb + minrgb - b, maxrgb + minrgb - g, maxrgb + minrgb - r)
img_3[i, j] = (max1 + min1 - b, max1 + min1 - g, max1 + min1 - r)
return img_3
def inverse(image):
dst = cv.bitwise_not(image)
cv.imshow("inverse demo", dst)
def complete(image):
dst = cv.bitwise_xor(image)
cv.imshow("complete demo", dst)
img = cv.imread("D:/Pic/PS/1.jpg")
cv.namedWindow("1", cv.WINDOW_AUTOSIZE)
#cv.namedWindow("2", cv.WINDOW_AUTOSIZE)
cv.namedWindow("3", cv.WINDOW_AUTOSIZE)
t1 = cv.getTickCount()
cv.imshow("1", img)
#img_2 = inverse_color(img)
#cv.imshow("2", img_2)
img_3 = complement_color(img)
cv.imshow("3", img_3)
inverse(img)
t2 = cv.getTickCount()
time = (t2-t1)/cv.getTickFrequency()
print("time : %s ms" % (time*1000))
cv.waitKey(0)
cv.destroyAllWindows()
还是用opencv自带的取反函数快