How to read gif from url using opencv (python)

后端 未结 1 1963
闹比i
闹比i 2021-01-04 18:38

I can read jpg file using cv2 as

import cv2
import numpy as np
import urllib
url = r\'http://www.mywebsite.com/abc.jpg\'
req = urllib.request.urlopen(url)
ar         


        
1条回答
  •  囚心锁ツ
    2021-01-04 18:57

    Steps:

    1. Use urllib to read the gif from web,
    2. Use imageio.mimread to load the gif to nump.ndarray(s).
    3. Change the channels orders by numpy or OpenCV.
    4. Do other image-processing using OpenCV

    Code example:

    import imageio
    import urllib.request
    
    url = "https://i.stack.imgur.com/lui1A.gif"
    fname = "tmp.gif"
    
    ## Read the gif from the web, save to the disk
    imdata = urllib.request.urlopen(url).read()
    imbytes = bytearray(imdata)
    open(fname,"wb+").write(imdata)
    
    ## Read the gif from disk to `RGB`s using `imageio.miread` 
    gif = imageio.mimread(fname)
    nums = len(gif)
    print("Total {} frames in the gif!".format(nums))
    
    # convert form RGB to BGR 
    imgs = [cv2.cvtColor(img, cv2.COLOR_RGB2BGR) for img in gif]
    
    ## Display the gif
    i = 0
    
    while True:
        cv2.imshow("gif", imgs[i])
        if cv2.waitKey(100)&0xFF == 27:
            break
        i = (i+1)%nums
    cv2.destroyAllWindows()
    

    Note. I use the gif in my another answer. Video Stabilization with OpenCV

    The result:

    >>> Total 76 frames!
    

    One of the gif-frames displayed:

    0 讨论(0)
提交回复
热议问题