python-opencv颜色分析小工具

效果
在这里插入图片描述最左边是一个控件栏用于修改3个通道的像素值。
imshow_img窗口显示5张图,从左到右依次是原图,红色通道图,绿色通道图,蓝色通道图,合成图。
switch,是选择将三个通道的像素值的图按或或者与进行合并。
代码如下。

import cv2
import glob
import numpy as np

def nothing(x):
    pass
    
#图片文件夹路径 结尾必须是/或者\\
leaf_path='../学习用烟/oil/'
img_list=glob.glob(leaf_path+'*.jpg')


cv2.namedWindow('Tunning')
cv2.resizeWindow('Tunning', 100, 100)
cv2.createTrackbar('index','Tunning',0,len(img_list)-1,nothing)
cv2.createTrackbar('r_value','Tunning',100,240,nothing)
cv2.createTrackbar('r_value2','Tunning',110,255,nothing)
cv2.createTrackbar('g_value','Tunning',100,240,nothing)
cv2.createTrackbar('g_value2','Tunning',110,255,nothing)
cv2.createTrackbar('b_value','Tunning',100,240,nothing)
cv2.createTrackbar('b_value2','Tunning',110,255,nothing)
cv2.createTrackbar('swich','Tunning',0,1,nothing)
cv2.namedWindow('inshow_img')
cv2.resizeWindow('inshow_img', 1500, 600)
while True:
    index = cv2.getTrackbarPos('index', 'Tunning')
    r_value=cv2.getTrackbarPos('r_value', 'Tunning')
    g_value = cv2.getTrackbarPos('g_value', 'Tunning')
    b_value = cv2.getTrackbarPos('b_value', 'Tunning')
    r_value2=cv2.getTrackbarPos('r_value2', 'Tunning')
    g_value2 = cv2.getTrackbarPos('g_value2', 'Tunning')
    b_value2 = cv2.getTrackbarPos('b_value2', 'Tunning')
    choice_value = cv2.getTrackbarPos('swich', 'Tunning')
    if (index != -1):
        img = cv2.imread(img_list[index])
        if b_value<b_value2:
            use_b_value2=b_value2
        else:
            use_b_value2 = b_value+10
        if r_value<r_value2:
            use_r_value2=r_value2
        else:
            use_r_value2 = r_value+10
        if g_value<g_value2:
            use_g_value2=g_value2
        else:
            use_g_value2 = g_value+10
        b_img = cv2.inRange(img[:, :, 0], b_value, use_b_value2)
        g_img = cv2.inRange(img[:, :, 1], g_value, use_g_value2)
        r_img = cv2.inRange(img[:, :, 2], r_value, use_r_value2)
        b_imshow = cv2.cvtColor(b_img, cv2.COLOR_GRAY2BGR)
        g_imshow = cv2.cvtColor(g_img, cv2.COLOR_GRAY2BGR)
        r_imshow = cv2.cvtColor(r_img, cv2.COLOR_GRAY2BGR)
        temp1 = np.zeros(b_img.shape, np.uint8)
        temp2 = temp1.copy()
        if choice_value==0:
            cv2.bitwise_or(b_img,g_img,temp1)
            cv2.bitwise_or(temp1,r_img,temp2)
        else:
            cv2.bitwise_and(b_img, g_img, temp1)
            cv2.bitwise_and(temp1, r_img, temp2)
        temp2_imshow = cv2.cvtColor(temp2, cv2.COLOR_GRAY2BGR)
        imshow_green_hstack = np.zeros([img.shape[0], 10, img.shape[2]], np.uint8)
        imshow_green_hstack[:,:,1]=255
        imshow_img = np.hstack((img, imshow_green_hstack, b_imshow, imshow_green_hstack,
                                g_imshow,imshow_green_hstack, r_imshow,imshow_green_hstack,temp2_imshow))
        imshow_all_resize = cv2.resize(imshow_img, (1600, 600))
        cv2.imshow('inshow_img', imshow_all_resize)
        c = cv2.waitKey(1)
        if c == ord('q'):
            break
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值