python调用OpenCV调整照片的色相、饱和度、明度

一、原图

原图

二、python程序

import cv2
import numpy as np

def empty(a):
    pass
cv2.namedWindow('TrackBars')
cv2.resizeWindow('TrackBars',380,480)
cv2.createTrackbar('Hue Min','TrackBars',0,255,empty)
cv2.createTrackbar('Hue Max','TrackBars',255,255,empty)
cv2.createTrackbar('Sat Min','TrackBars',0,255,empty)
cv2.createTrackbar('Sat Max','TrackBars',255,255,empty)
cv2.createTrackbar('Val Min','TrackBars',0,255,empty)
cv2.createTrackbar('Val Max','TrackBars',255,255,empty)

cv2.createTrackbar('R','TrackBars',0,255,empty)
cv2.createTrackbar('G','TrackBars',0,255,empty)
cv2.createTrackbar('B','TrackBars',0,255,empty)

cv2.createTrackbar('Bin Min','TrackBars',0,255,empty)
cv2.createTrackbar('Bin Max','TrackBars',255,255,empty)

while True:
    img=cv2.imread('John Lone.png')
    img=cv2.resize(img,None,fx=1.2,fy=1.2,interpolation=cv2.INTER_CUBIC)
    imgHSV=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
    imgGray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    h_min=cv2.getTrackbarPos('Hue Min','TrackBars')
    h_max=cv2.getTrackbarPos('Hue Max','TrackBars')
    s_min=cv2.getTrackbarPos('Sat Min','TrackBars')
    s_max=cv2.getTrackbarPos('Sat Max','TrackBars')
    v_min=cv2.getTrackbarPos('Val Min','TrackBars')
    v_max=cv2.getTrackbarPos('Val Max','TrackBars')

    lower=np.array([h_min,s_min,v_min])
    upper=np.array([h_max,s_max,v_max])
    mask=cv2.inRange(imgHSV,lower,upper)

    r=cv2.getTrackbarPos('R','TrackBars')
    g=cv2.getTrackbarPos('G','TrackBars')
    b=cv2.getTrackbarPos('B','TrackBars')
    print(f'h_min:{
      
      h_min},h_max:{
      
      h_max},s_min:{
      
      s_min},s_max:{
      
      s_max},v_min:{
      
      v_min},v_max:{
      
      v_max},r:{
      
      r},g:{
      
      g},b:{
      
      b}')
    
    bin_min=cv2.getTrackbarPos('Bin Min','TrackBars')
    bin_max=cv2.getTrackbarPos('Bin Max','TrackBars')
    bin_ret,bin_mask=cv2.threshold(imgGray,bin_min,bin_max,cv2.THRESH_BINARY)

    img2=np.copy(img)
    img2[:]=[b,g,r]
    bitwise=cv2.bitwise_and(img2,img2,mask=bin_mask)
    merge=cv2.addWeighted(cv2.bitwise_and(img,img,mask=mask),1,bitwise,1,0)

    cv2.imshow('Original Image',img)
    cv2.imshow('Mask',mask)
    cv2.imshow('Binary Mask',bin_mask)
    cv2.imshow('Bitwise Operation',bitwise)
    cv2.imshow('Merged Layer',merge)

    cv2.waitKey(1)
    if cv2.getWindowProperty('TrackBars',0)==-1:
        break
cv2.destroyAllWindows()

三、效果展示

效果展示

猜你喜欢

转载自blog.csdn.net/m0_67790374/article/details/129431030