Guest User

Untitled

a guest
Nov 3rd, 2020
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.75 KB | None | 0 0
  1. #pip install list:
  2. # pytube
  3. # opencv-python
  4. # pillow
  5.  
  6. from pytube import YouTube
  7. import cv2
  8. import os
  9. import shutil
  10. from PIL import Image, ImageStat, ImageDraw
  11.  
  12. #Get average colour of frames
  13. def get_average_colour(image_name, colour_list, frame_folder):
  14.   image = Image.open(frame_folder+"/"+image_name)
  15.   average = ImageStat.Stat(image).mean
  16.   colour_list.append(average)
  17.  
  18. def get_colour_list(download_folder, download_name, frame_folder):
  19.   #Get frames from video (once every second)
  20.   vidcap = cv2.VideoCapture(download_folder+"/"+download_name+".mp4")
  21.   fps = vidcap.get(cv2.CAP_PROP_FPS)
  22.   success,image = vidcap.read()
  23.   count = 0
  24.   colour_list = []
  25.   while success:
  26.     if count % round(fps) == 0:
  27.       frame_name = "frame%d.jpg" % count
  28.       cv2.imwrite(frame_folder+"/"+frame_name, image)     # save frame as JPEG file
  29.       get_average_colour(frame_name, colour_list, frame_folder)
  30.     success,image = vidcap.read()
  31.     count += 1
  32.   return colour_list
  33.  
  34. def image_scale(index, scale):
  35.   return int(index * scale)
  36.  
  37. def average_colours(video_url):
  38.   download_folder = "cache"
  39.   download_name = "test"
  40.   frame_folder = os.path.join(download_folder,"frames")
  41.  
  42.   #try:
  43.     #shutil.rmtree(download_folder)
  44.   #except FileNotFoundError:
  45.     #print(download_folder + " folder does not exist. Creating one!")
  46.  
  47.   #Make sure folders exist
  48.   os.makedirs(download_folder, exist_ok=True)
  49.   os.makedirs(frame_folder, exist_ok=True)
  50.  
  51.   #Download video
  52.   print("Skipping downloading video...")
  53.   print("Using file: "+download_folder+"/"+download_name+".mp4")
  54.   #print(download_name);
  55.   #video = YouTube(video_url)
  56.   #stream = video.streams.filter(mime_type="video/mp4",res="360p").all()[0]
  57.   #stream.download(download_folder, download_name)
  58.  
  59.   print("averaging colours...")
  60.   colour_list = get_colour_list(download_folder, download_name, frame_folder)
  61.  
  62.   print("writing image...")
  63.   output_image = Image.new('RGB', (len(colour_list), len(colour_list)), color = 'white')
  64.   d = ImageDraw.Draw(output_image)
  65.  
  66.   for index, value in enumerate(colour_list):
  67.     d.line((index,len(colour_list), index, 0), fill=(int(value[0]),int(value[1]),int(value[2])))
  68.  
  69.   output_image = output_image.resize((1920,1080),resample=Image.BILINEAR)
  70.   output_image.format = "PNG"
  71.   output_image.save("output.png", format="PNG")
  72.   output_image.show()
  73.  
  74.   try:
  75.     shutil.rmtree(download_folder)
  76.   except FileNotFoundError:
  77.     print(download_folder + " folder does not exist. Creating one!")
  78.  
  79.   #Make sure folders exist
  80.   os.makedirs(download_folder, exist_ok=True)
  81.   os.makedirs(frame_folder, exist_ok=True)
  82.  
  83. #if __name__ == "__main__": average_colours(str(input("Enter a YouTube video URL:")))
  84. if __name__ == "__main__": average_colours(str("HACKHACKHACK"))
  85.  
Advertisement
Add Comment
Please, Sign In to add comment