OpenCV打开摄像头,RGB转HSV空间



前言

有段时间没有更新了,最近主要在忙一个项目,用到了OpenCV,故想把一些常用代码在这里备份一下,一起学习。

环境:Pycharm+Python3.7


一、使用OpenCV打开摄像头

'''
版本:1.0
日期:2022/7/19
作者:Chen
功能:使用Opencv完成多张照片拍摄并保存至指定目录下
'''

import cv2
if __name__ == '__main__':
    i = 1
    cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)  # 打开摄像头
    ret = cap.set(3, 1280)  # 设置帧宽
    ret = cap.set(4, 720)  # 设置帧高
    while (1):
        ret, frame = cap.read()
        cv2.imshow("capture", frame)

        k = cv2.waitKey(1)
        if k == ord('s'):
            cv2.imwrite('./Resources/Pic/' + str(i) + '.jpg', frame)
            print('拍照成功,获得第', i, '张照片')
            i += 1
        elif k == ord("q"):
            break
    cap.release()
    cv2.destroyAllWindows()

二、使用OpenCV进行图像预处理

将RGB转化为HSV空间,提取感兴趣的区域

import cv2 as cv


class Hsv_change:
    # hsv 调试
    def __init__(self):
        self.i1 = 0
        self.i2 = 0
        self.i3 = 0
        self.i4 = 0
        self.i5 = 0
        self.i6 = 0
        pass

    def onChange(self, a, b, hsv):
        if a == 1:
            self.i1 = b
        elif a == 2:
            self.i2 = b
        elif a == 3:
            self.i3 = b
        elif a == 4:
            self.i4 = b
        elif a == 5:
            self.i5 = b
        elif a == 6:
            self.i6 = b
        lowerb = (self.i1, self.i2, self.i3)
        upperb = (self.i4, self.i5, self.i6)
        mask = cv.inRange(hsv, lowerb, upperb)
        cv.imshow("mask", mask)
        print(self.i1, self.i2, self.i3, self.i4, self.i5, self.i6)

    ## 调用次方法,传入文件路径
    def inRange_byFilePath(self, pathFile="Acquisition-1.jpg"):
        # img = cv2.imread("data2/test_aubo2.png")
        # img_copy=img.copy()
        dstImgggg = cv.imread(pathFile)
        img_copysize = cv.resize(dstImgggg, (int(dstImgggg.shape[1] / 2), int(dstImgggg.shape[0] / 2)))
        cv.imshow("img_copysize", img_copysize)
        hsv = cv.cvtColor(img_copysize, cv.COLOR_BGR2HSV)
        cv.imshow("hsv", hsv)
        cv.namedWindow("mask")
        cv.createTrackbar("h1", "mask", 0, 255, lambda a: self.onChange(1, a, hsv))
        cv.createTrackbar("s1", "mask", 0, 255, lambda a: self.onChange(2, a, hsv))
        cv.createTrackbar("v1", "mask", 0, 255, lambda a: self.onChange(3, a, hsv))
        cv.createTrackbar("h2", "mask", 0, 255, lambda a: self.onChange(4, a, hsv))
        cv.createTrackbar("s2", "mask", 0, 255, lambda a: self.onChange(5, a, hsv))
        cv.createTrackbar("v2", "mask", 0, 255, lambda a: self.onChange(6, a, hsv), )
        cv.waitKey(0)
        cv.destroyAllWindows()

        ## 调用次方法,传入图片

    def inRange_byImage(self, dstImgggg):
        img_copysize = cv.resize(dstImgggg, (int(dstImgggg.shape[1] / 2), int(dstImgggg.shape[0] / 2)))
        cv.imshow("img_copysize", img_copysize)
        hsv = cv.cvtColor(img_copysize, cv.COLOR_BGR2HSV)
        cv.imshow("hsv", hsv)
        cv.namedWindow("mask")
        cv.createTrackbar("h1", "mask", 0, 255, lambda a: self.onChange(1, a, hsv))
        cv.createTrackbar("s1", "mask", 0, 255, lambda a: self.onChange(2, a, hsv))
        cv.createTrackbar("v1", "mask", 0, 255, lambda a: self.onChange(3, a, hsv))
        cv.createTrackbar("h2", "mask", 0, 255, lambda a: self.onChange(4, a, hsv))
        cv.createTrackbar("s2", "mask", 0, 255, lambda a: self.onChange(5, a, hsv))
        cv.createTrackbar("v2", "mask", 0, 255, lambda a: self.onChange(6, a, hsv), )
        cv.waitKey(0)
        cv.destroyAllWindows()


if __name__ == '__main__':
    ##使用:
    h = Hsv_change()
    h.inRange_byFilePath("./Resources/Pic/1.jpg")

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值