Python的Open CV学习六

本文介绍了如何使用Python的OpenCV库进行图片堆叠,包括水平和垂直堆叠,并展示了如何通过轨迹栏调整HSV值来过滤图像颜色。通过创建轨迹栏,实时调整Hue、Saturation、Value的最小和最大值,实现对图像的色彩筛选。
摘要由CSDN通过智能技术生成

Python的Open CV学习一(准备工作)学习Open CV的前期准备工作(为自己本人学习记录及分享,不足之处请多多指导)https://blog.csdn.net/m0_55868453/article/details/122823865?spm=1001.2014.3001.5501Python的Open CV学习二(显示图片)学习如何导入Open CV库,并且学习如何显示图片,解决cv2代码补全问题代码黄色高亮问题https://blog.csdn.net/m0_55868453/article/details/122826126?spm=1001.2014.3001.5501Python的Open CV学习三(显示视频和摄像头图像)本文主要学习如何显示视频和摄像头图像(供学习记录,有不当之处请批评指正)https://blog.csdn.net/m0_55868453/article/details/122848220?spm=1001.2014.3001.5501Python的Open CV学习四(图像处理)本文主要学习如何图片变为灰度、模糊、边缘检测,改变图片大小、裁剪等(供学习记录,有不当之处请批评指正)https://blog.csdn.net/m0_55868453/article/details/123362071?spm=1001.2014.3001.5501Python的Open CV学习五(画图以及图像的逆透视变换)https://blog.csdn.net/m0_55868453/article/details/125216327

 今天我们学习如何将图片堆叠以及使用轨迹栏调整HSV值来过滤颜色

图片堆叠

首先导入需要的库

#导入CV2库q
import cv2.cv2 as cv2
#导入numpy库
import numpy as np

然后我们读取想要堆叠的图片,然后使用numpy的功能函数进行图像的堆叠,可以选择不同的堆叠方式,而且堆叠的图像不需要选择相同图像,这里只是方便将相同的图像进行堆叠

#读取图片
img = cv2.imread('mofang.jpg')
#利用np.vstack():在竖直方向上堆叠  np.hstack():在水平方向上平铺
imgHor = np.hstack((img,img))
imgVer = np.vstack((img,img))

最后将处理好的图片进行显示

#显示图片效果
cv2.imshow('Horizomtal',imgHor)
cv2.imshow('Veritical',imgVer)
#对图片进行延时
cv2.waitKey(0)

最终显示的结果

(横向堆叠)

 (纵向堆叠)由于图像较大显示不完整,我们可以调整图片的大小或者调整显示的大小

使用轨迹栏调整HSV值

也是同样导入需要的库

#导入CV2库q
import cv2.cv2 as cv2
#导入numpy库
import numpy as np

其次我们需要创建轨迹栏实现我们调整HSV的值(创建轨迹栏窗口、设置轨迹栏窗口大小以及轨迹栏的内容)由于我们是调整HSV值,所以我们的轨迹栏的内容为HSV的最大最小值,其中我们没有用到回调函数,所以我们设置成一个空函数,注意我们调用的函数需要在调用的前面,否则会出现错误

def empty(a):
    pass

#对设置的轨迹栏窗口设置名称 大小
cv2.namedWindow('TrackBars')
cv2.resizeWindow('TrackBars',720,330)
#对轨迹栏内容进行创造  名称  窗口  最小值  最大值  回调函数
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)

最后我们需要导入想要调整的图片,并且在while循环里实时读取我们设置的轨迹栏的值,并且将该值进行HSV的掩膜,然后显示我们的图像

#读取图片
img = cv2.imread('mofang2.jpg')
#对下面进行while循环
while True:
    #将其BGR颜色转换为HSV 色调(H),饱和度(S),明度(V)
    imgHSV = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
    #获取创造的轨迹栏的数据   注意:名字和窗口名必须得相同
    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')
    print(h_min,h_max,s_min,s_max,v_min,v_max)
    #设置调节的最大值和最小值
    lower = np.array([h_min,s_min,v_min])
    upper = np.array([h_max,s_max,v_max])
    #利用cv2.inRange函数设阈值,去除背景部分   原图  最低值  最高值
    #将低于lower和高于upper的部分分别变成0,lower~upper之间的值变成255
    mask = cv2.inRange(imgHSV,lower,upper)
    imgResult = cv2.bitwise_and(img,img,mask=mask)

    # img1 = np.hstack((img, imgHSV))
    # img2 = np.hstack((img1, imgResult))

    # #显示原图  HSV图  轨迹栏
    cv2.imshow('Original', img)
    cv2.imshow('HSV', imgHSV)
    cv2.imshow('Mask', mask)
    cv2.imshow('Result',imgResult)
    # cv2.imshow('Img3',img2)
    #因为加入了while循环,将延时无穷变为1ms
    cv2.waitKey(1)

最终的结果图如下

(原图)

 (HSV图)

 (掩膜图)

 (最终结果图)该图就是将其掩膜图与原图进行结合显示,利用imgResult = cv2.bitwise_and(img,img,mask=mask)功能函数进行实现

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值