मैं एक फ़ोल्डर में लगातार छवियों के बीच अंतर को पढ़ने और गणना करने के लिए निम्नलिखित कोड का उपयोग कर रहा हूं:

def cal_for_frames(video_path):
    frames = glob(os.path.join(video_path, '*.jpg'))
    frames.sort()


    diff = []
    prev = cv2.imread(frames[0])
    prev = cv2.cvtColor(prev, cv2.COLOR_BGR2GRAY)
    print(prev.dtype, prev.shape)
    for i, frame_curr in enumerate(frames):
        curr = cv2.imread(frame_curr)
        curr = cv2.cvtColor(curr, cv2.COLOR_BGR2GRAY)
        print(curr.dtype, curr.shape)
        tmp_diff = compute_DIFF(prev, curr)
        diff.append(tmp_diff)
        prev = curr
    
    return diff

अब मैं चाहता हूं कि मेरी prev हमेशा फ़ोल्डर में पहली छवि हो (यानी, स्थिर रहने के लिए)। ऐसा करने के लिए मुझे prev = cv2.imread(frames[0]) में क्या बदलाव करने होंगे? जहां frame000001 फ़ोल्डर में पहली छवि है।

0
SanOlans 30 अक्टूबर 2020, 18:51

1 उत्तर

सबसे बढ़िया उत्तर

बस for-loop की अंतिम पंक्ति: prev = curr और prev = cv2.imread(frames[0]) को हटा दें।

लेकिन आप अपने for-loop को तेज कर सकते हैं। यदि print फ़ंक्शन महत्वपूर्ण नहीं है, तो आप यह कर सकते हैं:

diff = [compute_DIFF(prev, cv2.cvtColor(cv2.imread(frame_curr), cv2.COLOR_BGR2GRAY)) for i, frame_curr in enumerate(frames)]

कोड:


def cal_for_frames(video_path):
    frames = glob(os.path.join(video_path, '*.jpg')).sort()
    prev = cv2.cvtColor(cv2.imread(frames[0]), cv2.COLOR_BGR2GRAY)
    print(prev.dtype, prev.shape)

    diff = [compute_DIFF(prev, cv2.cvtColor(cv2.imread(frame_curr), cv2.COLOR_BGR2GRAY)) for i, frame_curr in enumerate(frames)]

    return diff
1
Ahx 30 अक्टूबर 2020, 20:08