opencv 낮 과 야경 영상 을 분류 하 는 방법

약소 하 다
최근 에 데 이 터 를 분류 처리 해 야 하 는 데 이 터 는 낮 과 밤 을 포함 한 영상 데이터 로 구분 해 야 한다.한 영상 은 엄 격 히 한 장면 만 있다.예 를 들 어 낮 에 전체 영상 은 반드시 낮 이다.데이터 의 양 이 많 고 수천 개의 영상 이 있 기 때문에 코드 를 사용 하여 간단하게 구분 하고 마지막 에 운행 결 과 는 괜 찮 으 며 정확 도 는 80 여%이다.물론 이 데 이 터 는 너무 엄격 하지 않 기 때문에 코드 구분 이 충분 하 다.
논리학
  •  opencv 비디오 읽 기
  • 비디오 프레임 이미지 가 그 레이스 케 일 이미지 로 전환 되 었 습 니 다4.567917.어두 운 요소 가 전체 그림 에서 차지 하 는 비례 를 검 측 하고 일정한 한도 보다 크 면 이 영상 이 어두 운 밤 이 라 고 생각 합 니 다4.567917.일부 동 영상 을 선택 하여 판단 하 는 것 은 전체 동 영상 이 완 주 된 것 이 아니다4.567917.이 부분의 영상 프레임 이 어두 운 밤 이 전체 영상 프레임 의 50%를 차지 할 때 이 영상 은 어두 운 밤 환경 이 라 고 생각 하고 이 영상 파일 을 다른 폴 더 로 이동 합 니 다결실
    처음에는 9 개의 동 영상 을 테스트 해 100%분류 가 정확 했다.
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    여러 번 한도 값 을 미리 설정 한 후에 비교적 적합 한 한도 값 을 선택 하여 처리 하고 정확 도 는 약 86%정도 이다.
    소스 코드
    
    import cv2
    import numpy as np
    import os,time
    import shutil
    def GetImgNameByEveryDir(file_dir,videoProperty):  
        FileNameWithPath = [] 
        FileName         = []
        FileDir          = []
        for root, dirs, files in os.walk(file_dir):  
            for file in files:  
                if os.path.splitext(file)[1] in videoProperty:  
                    FileNameWithPath.append(os.path.join(root, file))  #       
                    FileName.append(file)                              #       
                    FileDir.append(root[len(file_dir):])               #          
        return FileName,FileNameWithPath,FileDir
     
    def img_to_GRAY(img,pic_path):
        #         
        gray_img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
        #             
        r,c = gray_img.shape[:2]
        piexs_sum=r*c #        
        #          
        #     60     
        dark_points = (gray_img < 60)
        target_array = gray_img[dark_points]
        dark_sum = target_array.size #     
        dark_prop=dark_sum/(piexs_sum) #        
        if dark_prop >=0.60: #           0.6,            
            return 1
        else:
            return 0
    
    if __name__ =='__main__':
        path="C:\\Users\\Administrator\\Desktop\\cut_video"
        new_path=path+"\\DarkNight"
        if not os.path.exists(new_path):
            os.mkdir(new_path)
        FileName,FileNameWithPath,FileDir=GetImgNameByEveryDir(path,'.mp4')
        for i in range(len(FileNameWithPath)):
            video_capture = cv2.VideoCapture(FileNameWithPath[i])
            video_size = (int(video_capture.get(cv2.CAP_PROP_FRAME_WIDTH)),int(video_capture.get(cv2.CAP_PROP_FRAME_HEIGHT)))
            total_frames = int(video_capture.get(cv2.CAP_PROP_FRAME_COUNT))
            video_fps = int(video_capture.get(5))
            start_fps=2*video_fps # 2     
            end_fps=6*video_fps #6   
            avg_fps=end_fps-start_fps #  fps
            video_capture.set(cv2.CAP_PROP_POS_FRAMES, start_fps) #      
            new_paths=new_path+"\\"+FileName[i]
            j=0
            count=0
            while True:
                success,frame = video_capture.read()
                if success:
                    j += 1
                    if(j>=start_fps and j <= end_fps):
                        flag=img_to_GRAY(frame,FileNameWithPath[i])
                        if flag==1:
                            count+=1
                    elif(j>end_fps):
                        break
                else:
                    break
            print('%s,%s'%(count,avg_fps))
            if count>int(avg_fps*0.48): #  fps50%   
                print("%s,      "%FileNameWithPath[i])
                video_capture.release() #       ,       
                time.sleep(0.2)
                shutil.move(FileNameWithPath[i],new_paths)
            else:
                print("%s,      "%FileNameWithPath[i])
    
    여기 서 opencv 가 낮 과 야경 영상 을 분류 하 는 방법 에 관 한 글 은 여기까지 소개 되 었 습 니 다.더 많은 opencv 가 낮 과 야경 영상 을 분류 하 는 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

    좋은 웹페이지 즐겨찾기