a `e|@sLddlZddlZGdddZGdddZGdddZGdd d ZdS) Nc@s,eZdZddZddZddZddZd S) ThresholdBlurCheckercCs ||_dSN thresholdselfrr/code/opendm/video/checkers.py__init__szThresholdBlurChecker.__init__cCsdSNFrrrrr NeedPreProcesssz#ThresholdBlurChecker.NeedPreProcesscCsdSrr)r video_path start_frame end_framerrr PreProcess szThresholdBlurChecker.PreProcesscCs t|tj}|||jkfSr)cv2 LaplacianCV_64Fvarr)rimage_bwidrrrr IsBlurszThresholdBlurChecker.IsBlurN)__name__ __module__ __qualname__r r rrrrrr rsrc@seZdZdddZddZdS)SimilarityCheckercCs"||_||_d|_d|_d|_dSr)r max_features last_image last_image_idlast_image_features)rrrrrr r s zSimilarityChecker.__init__c Cs|jdur.||_||_t||jdd|_dSt|j||jd\}}}||dk}|j|dk}tt ||}||j k} | s||_||_t||jdd|_|| |jfS)Ng{Gz? )rFN) rr rgoodFeaturesToTrackrr!calcOpticalFlowPyrLKnpaverageabsr) rrrfeaturesstatus_Z good_featuresZgood_features2distanceresrrr IsSimilars   zSimilarityChecker.IsSimilarN)r)rrrr r.rrrr rs rc@s.eZdZddZd ddZddZd d Zd S) NaiveBlackFrameCheckercCs ||_dSrrrrrr r 7szNaiveBlackFrameChecker.__init__ XcCsdSrr)rrrrwidthheightrrr r:sz!NaiveBlackFrameChecker.PreProcesscCsdSr rr rrr r =sz%NaiveBlackFrameChecker.NeedPreProcesscCst||jkSr)r&r'r)rrrrrr IsBlack@szNaiveBlackFrameChecker.IsBlackN)r0r1)rrrr rr r4rrrr r/6s r/c@s.eZdZd ddZddZddZd d Zd S) BlackFrameChecker\(\?333333?cCs:|dur |nd|_|dur|nd|_d|_d|_d|_dS)Nr6r7)picture_black_ratio_thpixel_black_thluminance_minimum_valueluminance_range_sizeabsolute_threshold)rr8r9rrr r Es zBlackFrameChecker.__init__cCsdS)NTrr rrr r Lsz BlackFrameChecker.NeedPreProcessc Cst|}|tj||}|dkr4t|tj}d|_d|_|durL|nd}| r|dush||kr| \}}|szqt |tj } | } | } t|j| | |_t |j| |_|d7}qP|j|j|j|_|dS)Nrr#)r VideoCapturesetCAP_PROP_POS_FRAMESintgetCAP_PROP_FRAME_COUNTr;r:isOpenedreadcvtColorCOLOR_BGR2GRAYminmaxr9r<release) rrrrcapZ frame_end frame_indexretframeZ gray_frameZgray_frame_minZgray_frame_maxrrr rOs(   zBlackFrameChecker.PreProcesscCs2t||jk}||jd|jd}||jkS)Nrr#)r&sumr<shaper8)rrrZnb_black_pixelsZratio_black_pixelsrrr r4wszBlackFrameChecker.IsBlackN)r6r7)rrrr r rr4rrrr r5Ds (r5)rnumpyr&rrr/r5rrrr s $