python从视频中获取图像,Python图像处理代码
计算机编程语言是一种多用途语言,广泛用于脚本编写。我们可以编写计算机编程语言脚本来自动化日常事务。本文将用计算机编程语言实现获取谷歌图片和油管(国外视频网站)视频,需要的可以参考一下
目录
1.网络获取谷歌图像1.1谷歌_图片_下载1.2美汤1.3图片搜索2网络获取油管(国外视频网站)视频
1.网络获取Google图像
1.1 google_images_download
计算机编程语言是一种多用途语言,广泛用于脚本编写。我们可以编写计算机编程语言脚本来自动化日常事务。假设我们要下载具有多个搜索查询的谷歌图片。我们可以自动化该过程,而不是手动进行。
如何安装所需的模块:
点安装谷歌图片下载
让我们看看如何编写计算机编程语言脚本以使用计算机编程语言谷歌_图片_下载模块下载谷歌图像。
#导入谷歌图片下载模块
从谷歌图片下载导入谷歌图片下载
#创建对象
响应=Google _ images _ download。谷歌图像下载()
搜索查询=
[
这款智能手机还配有一个内置指纹传感器。
弹出式自拍相机与后置相机对齐放置。
"就Vivo V15 Pro能够提供的存储而言
高达6GB的内存和128GB的板载存储。,
"这款智能手机可以使用3700毫安时的电池。",
]
极好的下载图像(查询):
#关键词是搜索查询
#格式是图像文件格式
#限制是要下载的图像数量
#打印urs是打印图像文件的全球资源定位器(Uniform Resource Locator)
#尺寸是图像大小,它可以
#手动指定("大、中、图标")
#纵横比表示高度与宽度的比率
要下载的图像数量。("高、方、宽、全景")
arguments={keywords:查询,
格式: jpg ,
极限 :4,
print_urls:True,
尺码 : 中号,
纵横比 : 全景 }
尝试:
response .下载(参数)
#处理文件未找到错误
除了文件未找到错误:
arguments={keywords:查询,
格式: jpg ,
极限 :4,
print_urls:True,
尺寸 : 中号 }
#为搜索的查询提供参数
尝试:
#下载照片基于
#根据给定的参数
response .下载(参数)
例外:
及格
#驱动代码
对于阙
ry in search_queries:
downloadimages(query)
print()
输出
注意:由于下载错误,部分图片无法打开。
1.2 BeautifulSoup
import reimport requests
from bs4 import BeautifulSoup
from urllib.parse import urlparse
import os
f = open("images_flowers.txt", "w")
res=[]
def download_google(url):
#url = https://www.google.com/search?q=flowers&sxsrf=ALeKk00uvzQYZFJo03cukIcMS-pcmmbuRQ:1589501547816&source=lnms&tbm=isch&sa=X&ved=2ahUKEwjEm4LZyrTpAhWjhHIEHewPD1MQ_AUoAXoECBAQAw&biw=1440&bih=740
page = requests.get(url).text
soup = BeautifulSoup(page, html.parser)
for raw_img in soup.find_all(img):
link = raw_img.get(src)
res.append(link)
if link:
f.write(link +"\n")
download_google(https://www.google.com/search?q=flowers&sxsrf=ALeKk00uvzQYZFJo03cukIcMS-pcmmbuRQ:1589501547816&source=lnms&tbm=isch&sa=X&ved=2ahUKEwjEm4LZyrTpAhWjhHIEHewPD1MQ_AUoAXoECBAQAw&biw=1440&bih=740)
f.close()
1.3 pyimagesearch
感谢 Adrian Rosebrock 编写此代码并将其公开。
# USAGE# python download_images.py --urls urls.txt --output images/santa
# import the necessary packages
from imutils import paths
import argparse
import requests
import cv2
import os
# construct the argument parse and parse the arguments
ap = argparse.ArgumentParser()
ap.add_argument("-u", "--urls", required=True,
help="path to file containing image URLs")
ap.add_argument("-o", "--output", required=True,
help="path to output directory of images")
args = vars(ap.parse_args())
# grab the list of URLs from the input file, then initialize the
# total number of images downloaded thus far
rows = open(args["urls"]).read().strip().split("\n")
total = 0
# loop the URLs
for url in rows:
try:
# try to download the image
r = requests.get(url, timeout=60)
# save the image to disk
p = os.path.sep.join([args["output"], "{}.jpg".format(
str(total).zfill(8))])
f = open(p, "wb")
f.write(r.content)
f.close()
# update the counter
print("[INFO] downloaded: {}".format(p))
total += 1
# handle if any exceptions are thrown during the download process
except:
print("[INFO] error downloading {}...skipping".format(p))
# loop over the image paths we just downloaded
for imagePath in paths.list_images(args["output"]):
# initialize if the image should be deleted or not
delete = False
# try to load the image
try:
image = cv2.imread(imagePath)
# if the image is `None` then we could not properly load it
# from disk, so delete it
if image is None:
print("None")
delete = True
# if OpenCV cannot load the image then the image is likely
# corrupt so we should delete it
except:
print("Except")
delete = True
# check to see if the image should be deleted
if delete:
print("[INFO] deleting {}".format(imagePath))
os.remove(imagePath)
2.网络获取Youtube视频
如何安装所需的模块:
pip install pytube3
import cv2from collections import defaultdict
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import warnings
from pytube import YouTube
warnings.filterwarnings(ignore)
video = YouTube(https://www.youtube.com/watch?v=GTkU4qj6v7g)
# print(video.streams.all())
print(video.streams.filter(file_extension = "mp4").all())
# [<Stream: itag="18" mime_type="video/mp4" res="360p" fps="30fps" vcodec="avc1.42001E" acodec="mp4a.40.2" progressive="True" type="video">,
# <Stream: itag="22" mime_type="video/mp4" res="720p" fps="30fps" vcodec="avc1.64001F" acodec="mp4a.40.2" progressive="True" type="video">,
# <Stream: itag="137" mime_type="video/mp4" res="1080p" fps="30fps" vcodec="avc1.64001f" progressive="False" type="video">,
# <Stream: itag="136" mime_type="video/mp4" res="720p" fps="30fps" vcodec="avc1.4d401e" progressive="False" type="video">,
# <Stream: itag="135" mime_type="video/mp4" res="480p" fps="30fps" vcodec="avc1.4d4015" progressive="False" type="video">,
# <Stream: itag="134" mime_type="video/mp4" res="360p" fps="30fps" vcodec="avc1.4d400d" progressive="False" type="video">,
# <Stream: itag="133" mime_type="video/mp4" res="240p" fps="30fps" vcodec="avc1.4d400c" progressive="False" type="video">,
# <Stream: itag="160" mime_type="video/mp4" res="144p" fps="30fps" vcodec="avc1.4d400b" progressive="False" type="video">,
# <Stream: itag="140" mime_type="audio/mp4" abr="128kbps" acodec="mp4a.40.2" progressive="False" type="audio">]
# 为要下载的视频的分辨率使用适当的 itag。如果您需要高分辨率视频下载,
# 请在以下步骤中选择最高分辨率的 itag 进行下载
print(video.streams.get_by_itag(137).download())
# /Users/sapnasharma/Documents/github/video_clips/Akshay Kumars Fitness Mantras for a Fit India GOQii Play Exclusive.mp4
video_path = video.title
print(video_path)
# "Akshay Kumars Fitness Mantras for a Fit India GOQii Play Exclusive"
# 视频标题在名称之间添加了一个管道,因此实际名称已损坏。我稍后会修复这个错误,
# 现在我们可以直接粘贴视频的名字来达到我们的目的。
video_path = "Akshay Kumars Fitness Mantras for a Fit India GOQii Play Exclusive.mp4"
# Video Capture Using OpenCV
cap = cv2.VideoCapture(video_path)
frame_cnt = int(cap.get(cv2.cv2.CAP_PROP_FRAME_COUNT))
fps = cap.get(cv2.CAP_PROP_FPS)
print(Frames in video: , frame_cnt)
print(f"Frames per sec: {fps}")
# Frames in video: 34249
# Frames per sec: 25.0
# (1)要获取整个视频的帧,请使用下面的代码块。
# Use this for accessing the entire video
index = 1
for x in range(frame_cnt):
ret, frame = cap.read()
if not ret:
break
# Get frame timestamp
frame_timestamp = cap.get(cv2.CAP_PROP_POS_MSEC)
# fetch frame every sec
if frame_timestamp >= (index * 1000.0): # change the value from 1000 to anyother value if not needed per second
index = index + 2 # decides the freq. of frames to be saved
print(f"++ {index}")
cv2.imwrite(f"images/cv_{index}.png", frame)
if cv2.waitKey(20) & 0xFF == ord(q):
break
cap.release()
cv2.destroyAllWindows()
# (2)要获取特定持续时间之间的帧,请使用以下代码块。
# Use this in case frames are to be fetched within a certain time frame
# frame_timestamp will be calculated as fps*time*1000 and set the starting index accordingly
index = 1560
for x in range(frame_cnt):
ret, frame = cap.read()
if not ret:
break
# Get frame timestamp
frame_timestamp = cap.get(cv2.CAP_PROP_POS_MSEC)
if frame_timestamp >= 1560000.0 and frame_timestamp <= 1800000.0 :
# fetch frame every sec
if frame_timestamp >= (index * 1000.0):
index = index + 4 # decides the freq. of frames to be saved
print(f"++ {index}")
cv2.imwrite(f"images/cv_{index}.png", frame)
if cv2.waitKey(20) & 0xFF == ord(q):
break
cap.release()
cv2.destroyAllWindows()
以上就是Python获取网络图片和视频的示例代码的详细内容,更多关于Python获取图片 视频的资料请关注盛行IT软件开发工作室其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。