小编him*_*ani的帖子

无法使用 cv2.VideoCapture(video_path).set(cv2.CAP_PROP_FPS, new_frame_rate) 更改输入视频的帧速率

我正在.mp4使用 opencv-python (3.4.3.18) 和 python (3.6.6)读取视频文件

vid = cv2.VideoCapture(video_path)
Run Code Online (Sandbox Code Playgroud)

原始视频大约有 59 FPS,我想将其降低到 10 FPS。所以,我cv2.CAP_PROP_FPS使用以下设置属性,

flag = vid.set(cv2.CAP_PROP_FPS, 10)
Run Code Online (Sandbox Code Playgroud)

(参考:https : //docs.opencv.org/3.4.3/d8/dfe/classcv_1_1VideoCapture.html#a8c6d8c2d37505b5ca61ffd4bb54e9a7c

但是,当我打印flag它给出的值时False。这意味着VideoCapture实例使用的后端不支持该属性。因此,当我使用阅读框架时,

return_value, frame = vid.read()
Run Code Online (Sandbox Code Playgroud)

它返回所有 59 帧,使后期处理步骤更加耗时。如何解决这个问题?

python opencv frame-rate python-3.6 opencv-python

6
推荐指数
1
解决办法
3629
查看次数

tfds.load()之后如何在TensorFlow 2.0中应用数据增强

我正在遵循本指南

它显示了如何使用以下tfds.load()方法从新的TensorFlow数据集中下载数据集:

import tensorflow_datasets as tfds    
SPLIT_WEIGHTS = (8, 1, 1)
splits = tfds.Split.TRAIN.subsplit(weighted=SPLIT_WEIGHTS)

(raw_train, raw_validation, raw_test), metadata = tfds.load(
    'cats_vs_dogs', split=list(splits),
    with_info=True, as_supervised=True)
Run Code Online (Sandbox Code Playgroud)

后续步骤显示了如何使用map方法将函数应用于数据集中的每个项目:

def format_example(image, label):
    image = tf.cast(image, tf.float32)
    image = image / 255.0
    # Resize the image if required
    image = tf.image.resize(image, (IMG_SIZE, IMG_SIZE))
    return image, label

train = raw_train.map(format_example)
validation = raw_validation.map(format_example)
test = raw_test.map(format_example)
Run Code Online (Sandbox Code Playgroud)

然后访问元素,我们可以使用:

for features in ds_train.take(1):
  image, label = features["image"], features["label"]
Run Code Online (Sandbox Code Playgroud)

要么

for example in tfds.as_numpy(train_ds):
  numpy_images, …
Run Code Online (Sandbox Code Playgroud)

python tensorflow tensorflow-datasets data-augmentation tensorflow2.0

5
推荐指数
1
解决办法
1691
查看次数