python opencv 打开USB相机并设置一些参数

打开单个相机

import cv2
import numpy as np
import datetime

expo = -7
saveKey = '0'
imgPath = "D:/img_collect/"

cap = cv2.VideoCapture(0)

#判断是否正常开启
print(cap.isOpened())
cap.set(3, 800)
cap.set(4, 600)
cap.set(cv2.CAP_PROP_EXPOSURE, expo)
frameNum = 0
# i = 1
while cap.isOpened():
    ret, frame = cap.read()
    cv2.imshow('frame', frame)
    # print(frameNum)
    fr = frame[10:590, 150:700]
    fr = np.rot90(fr, -1)
    img = cv2.resize(fr, (640, 480))
    #frameNum = frameNum + 1
    cv2.imshow('img', img)

    times = datetime.datetime.now().strftime('%Y_%m_%d_%H_%M_%S_%f')
    fileName = imgPath + times + str(expo) + '.JPG'
    # print(fileName)
	#每10帧存储一张图片
    """
    if frameNum % 10 == 1:
        if i < 10:
            i = '0' + str(i)
        cv2.imwrite('images/' + str(i) + '.jpg', frame)
        i = int(i)
        i += 1
        break
    """
    if cv2.waitKey(1) == ord(saveKey):
        frameNum = frameNum + 1
        cv2.imwrite(fileName, img)
        print("成功保存图片%s: {%s}"%(frameNum,fileName))

cap.release()
cv2.destroyAllWindows()

打开多个相机

# conding=utf-8
import cv2
import time
import numpy as np

class Camera:
    def __init__(self):
        self.image = None

    def getFrame(self, index):
        capture = cv2.VideoCapture(index)
        capture.set(3,800)
        capture.set(4,600)
        #capture.set(16, -5)
        capture.set(cv2.CAP_PROP_EXPOSURE, -7)
        #capture.set(cv2.CAP_PROP_FPS, 5)

        if capture.isOpened()!= True:
            print("打开摄像头失败")
            return
        frameNum = 0
        while(frameNum < 5):
            ret, frame = capture.read()
            frameNum += 1

        if ret == False:
            print("获取图像失败")
            return
        capture.release()
        fr = frame[10:590, 150:700]
        fr = np.rot90(fr,-1)
        img = cv2.resize(fr,(640,480))
        
        return img

    def saveImage(self, path):




if __name__ == '__main__':
    cameraNum = 4
    cameras = [Camera() for i in range(cameraNum)]
    frame0 = cameras[0].getFrame(0)
    cv2.imshow("frame0", frame0)

    cv2.waitKey()
    #fileName = time.strftime("%Y-%m-%d-%H-%M-%S", time.localtime())
    #print(fileName)
    #print("D:/code/PycharmProjects/Autoselling/" + fileName + "{0}.jpg")
    #cv2.imwrite("D:/code/PycharmProjects/Autoselling/" + fileName + "{0}.jpg", frame0)

截取数据集程序

import cv2
import numpy as np
import datetime

expo = -8
saveKey = '0'
imgPath = "D:/2019_7_25_img_collect/baokuanglishuite500ml/"

cap = cv2.VideoCapture(0)

#判断是否正常开启
print(cap.isOpened())
cap.set(3, 1280)
cap.set(4, 960)
cap.set(cv2.CAP_PROP_EXPOSURE, expo)
frameNum = 0
# i = 1
while cap.isOpened():
    ret, frame = cap.read()
    #cv2.imshow('frame', frame)
    # print(frameNum)
    fr = frame[10:950,200:1000]
    fr = np.rot90(fr, -1)
    img = cv2.resize(fr, (640, 480))
    # frameNum = frameNum + 1
    cv2.imshow('img', img)

    times = datetime.datetime.now().strftime('%Y_%m_%d_%H_%M_%S_%f')
    fileName = imgPath + times + str(expo) + '.JPG'
    # print(fileName)
#每10帧存储一张图片
    """
    if frameNum % 10 == 1:
        if i < 10:
            i = '0' + str(i)
        cv2.imwrite('images/' + str(i) + '.jpg', frame)
        i = int(i)
        i += 1
        break
    """
    if cv2.waitKey(2) == ord(saveKey):
        frameNum = frameNum + 1
        cv2.imwrite(fileName, img)
        print("成功保存图片%s: {%s}"%(frameNum, fileName))

cap.release()
cv2.destroyAllWindows()

你可能感兴趣的:(学习)