zoukankan      html  css  js  c++  java
  • 【OpenCV】——b站达尔闻

    达尔闻OpenCV学习

    image-20200806001501713

    计算机视觉导论

    一、计算机视觉解决的基本问题

    分类,检测,分隔

    image-20200806001905615

    image-20200806002107713

    image-20200806002306396

    image-20200806002403611

    image-20200806002637215

    二、计算机视觉的前沿进展

    深度学习 海量数据

    边缘计算

    图像分类领域:

    image-20200806003544789

    image-20200806003940899

    image-20200806004040456

    目标检测领域

    image-20200806004756615

    CS231n 李飞飞教授 公开课

    原始论文

    安装配置Opencv-Python

    https://github.com/opencv/opencv

    Resources

    pip换源

    pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
    
    
    pip install opencv-python
    
    #当前查看版本
    
    import cv2
    cv2.__version__
    

    案例

    边缘计算

    import cv2
    cap = cv2.VideoCapture(0)
    cap.open(0)
    
    while cap.isOpened():
        flag, frame = cap.read()
        cv2.imshow('my_window',frame)
        key_pressed = cv2.waitKey(60)
        print('键盘被按下的键是:',key_pressed)
        if key_pressed == 27:
            break
    
    cap.release()
    cv2.destroyAllWindows()
    
    
    #边缘检测
    import cv2
    #cap = cv2.VideoCapture(0)
    import numpy as npcap = cv2.VideoCapture(0,cv2.CAP_DSHOW)
    cap.open(0)
    while cap.isOpened():
        flag, frame = cap.read()
        if not flag:
            break
        key_pressed = cv2.waitKey(60)
        print('键盘被按下的键是:',key_pressed)
        
        frame = cv2.Canny(frame,100,200)
        frame = np.dstack(frame,frame,frame)
        cv2.imshow('my_window2',frame)
        
        if key_pressed == 27:
            break
    cap.release()
    cv2.destroyAllWindows()
    
    
    #CannyScanV1.py
    import cv2
    import numpy as np
    cap = cv2.VideoCapture(0)
    #import numpy as npcap = cv2.VideoCapture(0,cv2.CAP_DSHOW)
    cap.open(0)
    while cap.isOpened():
        flag, frame = cap.read()
        if not flag:
            break
        key_pressed = cv2.waitKey(60)
        print('键盘被按下的键是:',key_pressed)
        
        frame = cv2.Canny(frame,100,200)
        frame = np.dstack((frame,frame,frame))
        cv2.imshow('my_window2',frame)
        
        if key_pressed == 27:
            break
    cap.release()
    cv2.destroyAllWindows()
    
    
    import cv2
    import numpy as np
    
    cap = cv2.VideoCapture(0)
    while(1):
        # get a frame
        ret, frame = cap.read()
        # show a frame
        cv2.imshow("capture", frame)
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
    cap.release()
    cv2.destroyAllWindows() 
    
    #CannyScanV1.py
    
    import cv2
    import numpy as np
    
    cap = cv2.VideoCapture(0)
    
    while(True):
        ret, frame = cap.read()
        gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
        cv2.imshow('frame',gray)
        if cv2.waitKey(1) & 0xff == ord('q'):
            break
    
    cap.release()
    cv2.destroyAllWindows()   
    
    
    
    import cv2
    import numpy as np
    cap = cv2.VideoCapture(0)
    #import numpy as npcap = cv2.VideoCapture(0,cv2.CAP_DSHOW)
    cap.open(0)
    while cap.isOpened():
        flag, frame = cap.read()
        if not flag:
            break
        gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
        gray =  cv2.blur(gray,ksize = (5, 5))
        grayframe = cv2.Canny(gray,100,200)
        frame = cv2.Canny(frame,100,200)
        ##frame = np.dstack(frame,frame,frame)
        cv2.imshow('my_window',frame)
        cv2.imshow('my_window2',grayframe)
        if cv2.waitKey(1) & 0xff == ord('q'):
            break
        
    cap.release()
    cv2.destroyAllWindows()
    
    

    笑脸检测

    #SmileCaptureV1.py
    import cv2
    
    #人脸检测 眼睛检测,微笑检测
    
    face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades+'haarcascade_frontalface_default.xml')
    
    eye_cascade = cv2.CascadeClassifier(cv2.data.haarcascades+'haarcascade_eye.xml')
    
    smile_cascade = cv2.CascadeClassifier(cv2.data.haarcascades+'haarcascade_smile.xml')
    
    cap = cv2.VideoCapture(0)
    while(True):
        ret,frame = cap.read()
        faces = face_cascade.detectMultiScale(frame,1.3,2)
        img = frame
        for (x,y,w,h) in faces:
            img = cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
            face_area = img[y:y+h,x:x+w]
            eyes = eye_cascade.detectMultiScale(face_area,1.3,10)
            for (ex,ey,ew,eh) in eyes:
                cv2.rectangle(face_area,(ex,ey),(ex+ew,ey+eh),(0,255,0),1)
                
            smiles = smile_cascade.detectMultiScale(face_area,scaleFactor = 1.16,minNeighbors=65,minSize=(25,25),flags = cv2.CASCADE_SCALE_IMAGE)
            for (ex,ey,ew,eh) in smiles:
                cv2.rectangle(face_area,(ex,ey),(ew+ex,ey+eh),(0,0,255),1)
                cv2.putText(img,'Smile',(x,y-7),3,1.2,(0,0,255),2,cv2.LINE_AA)
        cv2.imshow("frame2",img)
        if cv2.waitKey(5) & 0xff == ord('q'):
            break
        
    cap.release()
    cv2.destoryAllWindows()
    
    

    视频

    调用摄像头:

    #
    import cv2
    cap  = cv2.VideoCapture(0)
    if not cap.isOpened():
        print("无法打开摄像头")
        exit()
        
    while True:
        ret, frame = cap.read()
        if not ret:
            print("无法打开摄像头")
            break
            
        gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
        cv2.imshow("frame_window",gray)
        
        if cv2.waitKey(1) == ord('q'):
            break
            
    cap.release()
    cv2.destroyAllWindows()
            
    
    

    本地视频

    # VedioCapv1.py
    import cv2
    cap  = cv2.VideoCapture("test.mp4")
    if not cap.isOpened():
        print("无法打开视频")
        exit()
    
    print('WIDTH',cap.get(3))
    print('HIGTH',cap.get(4))
    while True:
        ret, frame = cap.read()
        if not ret:
            print("无法打开摄像头")
            break
            
        gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
        cv2.imshow("frame_window",gray)
        
        if cv2.waitKey(25) == ord('q'):
            break
            
    cap.release()
    cv2.destroyAllWindows()
    

    保存处理后的视频

    import numpy as np
    import cv2 as cv
    cap = cv.VideoCapture(0)
    fourcc = cv.VideoWriter_fourcc(*'DIVX')
    # Define the codec and create VideoWriter object
    # 指定输出文件,fourCC视频编码,FPS
    out = cv.VideoWriter('output.avi',fourcc,20.0,(640,480))
    
    while cap.isOpened():
        ret,frame = cap.read()
        if not ret:
            print("无法打开摄像头")
            break
        frame = cv.flip(frame,0) ## 翻转视频
        
        out.write(frame)
        
        cv.imshow('frame',frame)
        if cv.waitKey(1) == ord('q'):
            break
            
    cap.release()
    out.release()# 若注释掉,没有预览图片
    cv.destoryAllWindows()
    

    目标检测

    综述和YOLO的介绍

  • 相关阅读:
    <dependency>
    json、javaBean、xml互转的几种工具介绍
    日志系统logBack的配置以及sdoutAppender控制台输出
    Java中Main函数探讨
    java的Daemon守护线程
    FastJson序列化对象
    多线程情况下获取数据出现的不一致
    苏州地区--校招IT公司
    Spark聚合操作:combineByKey()
    Hadoop初步简介
  • 原文地址:https://www.cnblogs.com/pailang-lee/p/14353960.html
Copyright © 2011-2022 走看看