'''截取图片的右半部分''' import cv2 import os def merge_jpg_to_mp4(folder_path, output_file): # 获取文件夹下所有的 JPG 文件 jpg_files = [file for file in os.listdir(folder_path) if file.lower().endswith('.jpg')] jpg_files.sort() # 按文件名排序 # 读取第一张图片,获取尺寸信息 first_image_path = os.path.join(folder_path, jpg_files[0]) first_image = cv2.imread(first_image_path) height, width, _ = first_image.shape width = width // 2 print(height, width) # 创建 VideoWriter 对象 fourcc = cv2.VideoWriter_fourcc(*'mp4v') video_writer = cv2.VideoWriter(output_file, fourcc, 20, (width, height)) # 逐个读取 JPG 文件并写入视频 for jpg_file in jpg_files: image_path = os.path.join(folder_path, jpg_file) image = cv2.imread(image_path) # print(type(image)) width_begin = (image.shape[1] - image.shape[1]//2) image1 = image[:,width_begin:,:] print(image1.shape) # cv2.imshow('img',image) # cv2.waitKey(0) # break video_writer.write(image1) # 释放资源 video_writer.release() # 指定文件夹路径和输出文件名 folder_path = './video/' output_file = 'output3.mp4' # 合并文件夹下的所有 JPG 文件为一个 MP4 文件 merge_jpg_to_mp4(folder_path, output_file)
时间: 2024-03-26 10:36:37 浏览: 140
这段代码是用 Python 的 OpenCV 库实现的,目的是将一个文件夹下的 JPG 图片合成为一个 MP4 视频文件。具体实现步骤如下:
1. 获取文件夹下所有的 JPG 文件,并按照文件名排序。
2. 读取第一张 JPG 图片,获取其尺寸信息,并将其宽度减半,得到视频的宽度。
3. 创建 VideoWriter 对象,指定输出的文件名、编码格式、帧率和视频尺寸。
4. 逐个读取 JPG 文件,并将其右半部分截取下来。
5. 将截取后的图片写入视频。
6. 释放资源。
需要注意的是,由于代码中使用了 cv2.imshow 和 cv2.waitKey,因此需要在运行该代码时添加相应的 GUI 环境,否则会出现错误。
相关问题
detectron2 mask训练代码
以下是一个基本的 detectron2 mask 训练代码示例。
```
# 导入必要的库
import os
import numpy as np
import cv2
from detectron2.structures import BoxMode
from detectron2.utils.visualizer import Visualizer
from detectron2.data import MetadataCatalog, DatasetCatalog
from detectron2.engine import DefaultTrainer, DefaultPredictor
from detectron2.config import get_cfg
from detectron2.data.datasets import register_coco_instances
from detectron2.data import DatasetMapper
from detectron2.data.catalog import DatasetCatalog, MetadataCatalog
from detectron2.modeling import build_model
from detectron2.utils.logger import setup_logger
from detectron2.checkpoint import DetectionCheckpointer
from detectron2.utils.events import CommonMetricPrinter, JSONWriter, TensorboardXWriter
from detectron2.engine import DefaultPredictor
# 注册数据集
register_coco_instances("my_dataset_train",{}, os.path.join("path/to/train/annotation/file.json"), os.path.join("path/to/train/images/folder"))
register_coco_instances("my_dataset_val",{}, os.path.join("path/to/val/annotation/file.json"), os.path.join("path/to/val/images/folder"))
def custom_dataset_mapper(dataset_dict):
dataset_dict = copy.deepcopy(dataset_dict)
# 将数据集中的像素值和目标映射到 0-255 范围内。
image = dataset_dict["image"]
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
annotations = dataset_dict['annotations']
for annotation in annotations:
annotation['bbox_mode'] = BoxMode.XYWH_ABS
return {"image": image, "annotations": annotations, "height": image.shape[0], "width": image.shape[1]}
# 设置模型配置
cfg = get_cfg()
cfg.merge_from_file(model_zoo.get_config_file("COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml"))
cfg.DATASETS.TRAIN = ("my_dataset_train",)
cfg.DATASETS.TEST = ("my_dataset_val",)
cfg.DATALOADER.NUM_WORKERS = 4
cfg.MODEL.WEIGHTS = model_zoo.get_checkpoint_url("COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml")
cfg.SOLVER.IMS_PER_BATCH = 2
cfg.SOLVER.BASE_LR = 0.0025
cfg.SOLVER.MAX_ITER = 1000
cfg.MODEL.ROI_HEADS.BATCH_SIZE_PER_IMAGE = 512
cfg.MODEL.ROI_HEADS.NUM_CLASSES = 1
# 向数据集目录中注册元数据
MetadataCatalog.get("my_dataset_train").set(thing_classes=["class1", "class2"])
MetadataCatalog.get("my_dataset_val").set(thing_classes=["class1", "class2"])
# 配置训练器
os.makedirs(cfg.OUTPUT_DIR, exist_ok=True)
trainer = DefaultTrainer(cfg)
trainer.resume_or_load(resume=False)
# 训练模型
trainer.train()
# 进行预测
predictor = DefaultPredictor(cfg)
metadata = MetadataCatalog.get("my_dataset_val")
dataset_dicts = DatasetCatalog.get("my_dataset_val")
for d in random.sample(dataset_dicts, 3):
im = cv2.imread(d["file_name"])
outputs = predictor(im)
v = Visualizer(im[:, :, ::-1], metadata=metadata, scale=1.2)
v = v.draw_instance_predictions(outputs["instances"].to("cpu"))
cv2.imshow('Image',v.get_image()[:,:,::-1])
cv2.waitKey(0)
```
请注意,训练模型的具体内容可能会因您使用的模型而异,代码中的一些配置和参数也可能需要根据您的需求进行修改。建议使用 detectron2 官方文档作为参考。
阅读全文
相关推荐


















