Прочитать объект видеофайла из S3 и использовать его для дальнейшей обработки через Opencv - PullRequest
0 голосов
/ 04 октября 2018
import boto3

import cv2
import numpy as np
s3 = boto3.resource('s3')
vid = (s3.Object('bucketname', 'video.blob').get()['Body'].read())
cap = cv2.VideoCapture(vid)

Это мой код.У меня есть видео файл в ведре s3.Я хочу обработать его с помощью OpenCV и не хочу его загружать.Поэтому я пытаюсь сохранить этот видеофайл в vid.Теперь проблема в том, что type(vid) - это byte, что является причиной появления этой ошибки TypeError: an integer is required (got type bytes) в строке 6. Я пытался преобразовать ее в целое число или строку, но не смог.

При попытке преобразовать байт в целое число: я сослался на this и получал проблемы с длиной.Это всего лишь пример видеофайла.Фактический файл, который я хочу обработать, будет огромным при преобразовании в байтовый объект.

При попытке получить объект в виде строки и затем преобразовать его в целое число: я сослался на this .Даже это, кажется, не работает для меня.

Если кто-то может помочь мне решить эту проблему, я буду благодарен.Пожалуйста, прокомментируйте, если вам что-то не ясно в отношении моей проблемы, и я постараюсь предоставить более подробную информацию.

1 Ответ

0 голосов
/ 29 ноября 2018

Ниже приведен фрагмент полезного кода для выполнения различных операций с корзиной S3.

import boto3
s3 = boto3.resource('s3', region_name='us-east-2')

для получения списка корзин в s3

for bucket in s3.buckets.all():
    print(bucket.name)

создание корзины в s3

my_bucket=s3.create_bucket(Bucket='Bucket Name', CreateBucketConfiguration={
    'LocationConstraint': 'us-east-2'
})

перечисление объектов внутри корзины

my_bucket = s3.Bucket('Bucket Name')
for file in my_bucket.objects.all():
    print (file.key)        

Загрузка файла из текущего каталога

import os
print(os.getcwd())

fileName="B01.jpg"
bucketName="Bucket Name"
file = open(fileName)
s3.meta.client.upload_file(fileName, bucketName, 'test2.txt')   

чтение изображения / видео из корзины

import matplotlib.pyplot as plt
s3 = boto3.resource('s3', region_name='us-east-2')
bucket = s3.Bucket('Bucket Name')   # bucket name
object = bucket.Object('maisie_williams.jpg')  # image name
object.download_file('B01.jpg')            #donwload image with this name
img=plt.imread('B01.jpg')              #read the downloaded image
imgplot = plt.imshow(img)              #plot the image
plt.show(imgplot)  

Чтение из одноговедро, а затем выгрузить его в другой

import boto3
s3 = boto3.resource('s3', region_name='us-east-2')
bucket = s3.Bucket('Bucket Name')   # bucket name
object = bucket.Object('maisie_williams.jpg')  # image name
object.download_file('B01.jpg')



fileName="B01.jpg"
bucketName="Bucket Name"
file = open(fileName)
s3.meta.client.upload_file(fileName, bucketName, 'testz.jpg')

Если у вас есть ключи доступа, то вы, вероятно, можете сделать следующее

keys = pd.read_csv('accessKeys.csv')
        #creating Session for S3 buckets
        session = boto3.session.Session(aws_access_key_id=keys['Access key ID'][0],
            aws_secret_access_key=keys['Secret access key'][0])
        s3 = session.resource('s3')

        buck = s3.Bucket('Bucket Name')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...