# coding=utf-8
import numpy as np
import cv2 as cv
img = cv.imread("72.bmp",cv.IMREAD_COLOR)
winName = "image"
cv.namedWindow(winName)
def nothing(x):
r = cv.getTrackbarPos('R', winName)
g = cv.getTrackbarPos('G', winName)
b = cv.getTrackbarPos('B', winName)
img = cv.imread("72.bmp",cv.IMREAD_COLOR)
img=img[:]
img[:,:,0]=img[:,:,0]*(b/128.0)
img[:,:,1]=img[:,:,1]*(g/128.0)
img[:,:,2]=img[:,:,2]*(r/128.0)
print "B:",b/128.0,"G:",g/128.0,"R:",r/128.0
print "********************"
cv.imshow('image', img)
if __name__ == '__main__':
cv.imshow('image',img)
cv.createTrackbar('R', winName, 128, 255, nothing)
cv.createTrackbar('G', winName, 128, 255, nothing)
cv.createTrackbar('B', winName, 128, 255, nothing)
cv.waitKey(0)
cv.destroyAllWindows()
然后根据返回的系数批量调整图片
import os
import cv2
picture_path='//cam0/'
new_path='new0_0/'
def change(f,b,g,r):
path=picture_path+f
newpath=new_path+f
img=cv2.imread(path,cv2.IMREAD_COLOR)
img[:,:,0]=img[:,:,0]*b
img[:,:,1]=img[:,:,1]*g
img[:,:,2]=img[:,:,2]*r
cv2.imwrite(newpath,img)
if __name__ == '__main__':
b=0.90625
g=0.671875
r=0.8984375
for f in os.listdir(picture_path):
change(f,b,g,r)
类似的,还可以调整亮度对比度
# coding=utf-8
import numpy as np
import cv2 as cv
img = cv.imread(".png",cv.IMREAD_COLOR)
winName = "image"
cv.namedWindow(winName)
def nothing(x):
a = cv.getTrackbarPos('a', winName)
b = cv.getTrackbarPos('b', winName)
img = cv.imread(".png",cv.IMREAD_COLOR)
rows,cols,channels=img.shape
blank = np.zeros([rows, cols, channels], img.dtype)
img = cv.addWeighted(img, a/100.0, blank, 1-a, b)
cv.imshow('image',img)
print "a:",a/100.0,"b:",b
print "********************"
if __name__ == '__main__':
cv.imshow('image',img)
cv.createTrackbar('a', winName, 0, 300, nothing)
cv.createTrackbar('b', winName, 0, 200, nothing)
cv.waitKey(0)
cv.destroyAllWindows()