滑动条修改图片的rgb通道

本文详细介绍使用Python的OpenCV库进行图像色彩调整的方法,包括通过滑动条实时调整RGB通道值,以及如何批量处理图像文件,调整其色彩饱和度。此外,还介绍了如何调整图像的亮度和对比度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# 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()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值