问题 H: 列表数据清理

题目描述

输入一个列表,将其中整数和值为整数的字符串转为整型数据,将其中浮点数字符串转为浮点数,其他所有字符串保持原样。

样例输入 复制

[['abc', '123', '45.6', 'car', 'Bike']]

样例输出 复制

[['abc', 123, 45.6, 'car', 'Bike']]

来源/分类

高级语言程序实践-6 

def arr(ls):
    l=len(ls)
    for i in range(l):
        if type(ls[i])==list:
            arr(ls[i])
        else:
            flag=1
            for j in ls[i]:
                if 'a'<=j<='z'or 'A'<=j<='Z':
                    flag=0
                    break
            if flag==1:
                temp=eval(ls[i])
                ls[i]='{:g}'.format(temp)
                ls[i]=eval(ls[i])
    return ls
n=eval(input())
print(arr(n))

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将cv::Mat转换为H265数据流,你可以使用FFmpeg库来进行编码。以下是一个简单的示例代码: ```cpp extern "C" { #include <libavcodec/avcodec.h> #include <libavformat/avformat.h> #include <libavutil/opt.h> } void cvMatToH265(cv::Mat& frame, const std::string& outputFilename) { AVCodec* codec = avcodec_find_encoder(AV_CODEC_ID_H265); if (!codec) { // 处理无法找到编码器的情况 return; } AVCodecContext* codecContext = avcodec_alloc_context3(codec); if (!codecContext) { // 处理无法分配编码器上下文的情况 return; } // 设置编码器参数 codecContext->width = frame.cols; codecContext->height = frame.rows; codecContext->pix_fmt = AV_PIX_FMT_YUV420P; codecContext->time_base = {1, 30}; // 打开编码器 if (avcodec_open2(codecContext, codec, nullptr) < 0) { // 处理无法打开编码器的情况 avcodec_free_context(&codecContext); return; } // 创建AVFrame用于保存转换后的图像数据 AVFrame* avFrame = av_frame_alloc(); avFrame->format = codecContext->pix_fmt; avFrame->width = frame.cols; avFrame->height = frame.rows; // 分配图像数据缓冲区 int bufferSize = av_image_get_buffer_size(codecContext->pix_fmt, frame.cols, frame.rows, 1); uint8_t* buffer = (uint8_t*)av_malloc(bufferSize); av_image_fill_arrays(avFrame->data, avFrame->linesize, buffer, codecContext->pix_fmt, frame.cols, frame.rows, 1); // 创建输出文件 AVFormatContext* formatContext = nullptr; avformat_alloc_output_context2(&formatContext, nullptr, nullptr, outputFilename.c_str()); // 创建输出流 AVStream* stream = avformat_new_stream(formatContext, codec); stream->codecpar->codec_tag = 0; avcodec_parameters_from_context(stream->codecpar, codecContext); // 打开输出文件 if (avio_open(&formatContext->pb, outputFilename.c_str(), AVIO_FLAG_WRITE) < 0) { // 处理无法打开输出文件的情况 av_frame_free(&avFrame); avcodec_free_context(&codecContext); return; } // 写入文件头 avformat_write_header(formatContext, nullptr); // 将cv::Mat转换为AVFrame并编码写入文件 AVPacket packet; av_init_packet(&packet); packet.data = nullptr; packet.size = 0; int ret = 0; cv::Mat yuvFrame; cv::cvtColor(frame, yuvFrame, cv::COLOR_BGR2YUV_I420); avFrame->data[0] = yuvFrame.data; avFrame->data[1] = yuvFrame.data + frame.cols * frame.rows; avFrame->data[2] = yuvFrame.data + frame.cols * frame.rows * 5 / 4; ret = avcodec_send_frame(codecContext, avFrame); if (ret < 0) { // 处理发送帧数据失败的情况 av_frame_free(&avFrame); avcodec_free_context(&codecContext); return; } while (ret >= 0) { ret = avcodec_receive_packet(codecContext, &packet); if (ret == AVERROR(EAGAIN) || ret == AVERROR_EOF) { break; } else if (ret < 0) { // 处理接收编码数据失败的情况 av_packet_unref(&packet); av_frame_free(&avFrame); avcodec_free_context(&codecContext); return; } packet.stream_index = stream->index; av_interleaved_write_frame(formatContext, &packet); av_packet_unref(&packet); } // 写入文件尾 av_write_trailer(formatContext); // 清理资源 av_frame_free(&avFrame); avcodec_free_context(&codecContext); avio_close(formatContext->pb); avformat_free_context(formatContext); } ``` 你可以调用`cvMatToH265`函数,并将`cv::Mat`和输出文件名作为参数传递给它,例如: ```cpp cv::Mat frame = cv::imread("input.jpg"); cvMatToH265(frame, "output.h265"); ``` 请注意,这只是一个简单的示例,你可能需要根据你的具体需求进行调整。此外,确保你已正确设置了FFmpeg库以及相关头文件和库文件的路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值