基于EBAZ4205矿板的图像处理:12二值化图像的膨胀与腐蚀

基于EBAZ4205矿板的图像处理:12二值化图像的膨胀与腐蚀

先看效果

在这里插入图片描述
注意:我的项目中的膨胀和腐蚀是对二值化图像中的像素值为255的像素进行处理,而我的图像中255为白色,0为黑色,所以是对颜色为白色的像素点进行的膨胀和腐蚀,别看错了。
如上图所见,膨胀效果能够消除图像中的毛刺,将区域连通,扩大了数据。
腐蚀效果能够抹除部分像素数据,放大图像中的毛刺,让区域变得不连通。

算法讲解

在这里插入图片描述
这里不对膨胀和腐蚀算法本身进行介绍,有的是讲的好的。

本项目中,是对一个滑动窗口内的所有像素进行统计,统计像素值为255的点,计为data_sum。
而膨胀算法就是当data_sum大于等于3(或者更小)时,就让该滑动窗口的中心点的像素值为255.
而腐蚀算法就是当data_sum大于等于6(或者更大)时,才让该滑动窗口的中心点的像素值为255

算法的FPGA部署

在这里插入图片描述

这里就是先进行图像的局部阈值二值化,将图像变为二值化图像,然后对二值化图像进行膨胀腐蚀操作。膨胀腐蚀系数这里,我直接开辟了一个端口出来,让它和局部阈值二值化系数一样都可以通过ps端进行调节。

然后在ps端,我是通过使用UART接受中断来接受用户通过串口发送的数据,用户可以通过串口动态调整局部阈值二值化系数和膨胀腐蚀系数。

block design

在这里插入图片描述

AXILiteCtrlThreshold模块

在这里插入图片描述
这个模块就是一个能让PS端能通过AXILIte总线读写PL端reg的模块,从而能动态调整局部二值化阈值和膨胀腐蚀系数阈值。
我的上一篇和上上篇都讲过怎么创建了。这里不说了。

项目代码

图像处理总模块

//作者:抢公主的大魔王
//日期:24.5.15
module video_processor(
    (* X_INTERFACE_IGNORE = "true" *) input         frame_clk,    //cmos 像素时钟
    (* X_INTERFACE_IGNORE = "true" *) input         frame_rst_n,  
    
    //预处理图像
    (* X_INTERFACE_IGNORE = "true" *) input         pre_vsync, //预处理图像场同步信号
    (* X_INTERFACE_IGNORE = "true" *) input [23:0]  pre_data,  //预处理图像数据
    (* X_INTERFACE_IGNORE = "true" *) input         pre_href,  //预处理图像数据有效信号
    (* X_INTERFACE_IGNORE = "true" *) input         pre_frame_ce, //预处理图像时钟使能信号

    //阈值控制
    (* X_INTERFACE_IGNORE = "true" *) input [7:0 ]  loc_bin_thresh_coefficient, //来自PS端的局部二值化阈值系数
    (* X_INTERFACE_IGNORE = "true" *) input [7:0 ]  expa_corr_thresh,
        
    //处理后图像
    (* X_INTERFACE_IGNORE = "true" *) output        pos_vsync, //处理后图像场同步信号
    (* X_INTERFACE_IGNORE = "true" *) output [23:0] pos_data,  //处理后图像数据
    (* X_INTERFACE_IGNORE = "true" *) output        pos_href, //处理后图像数据有效信号
    (* X_INTERFACE_IGNORE = "true" *) output        pos_frame_ce //处理后图像时钟使能信号  
);

//wire define 
wire [7:0] gray_data ;
wire       gray_vsync;
wire       gray_frame_ce;
wire       gray_href;

//*****************************************************
//**                    main code
//*****************************************************
//rgb转ycbcr模块
rgb2gray  u_rgb2gray(
    .cmos_frame_clk     (frame_clk      ),
    .cmos_rstn          (frame_rst_n    ),//同步复位
    .cmos_frame_vsync   (pre_vsync      ),
    .cmos_frame_data    (pre_data       ),
    .cmos_frame_href    (pre_href       ),
    .cmos_frame_ce      (pre_frame_ce   ),

    .dataout_frame_vsync(gray_vsync     ),
    .dataout_frame_data (gray_data      ),
    .dataout_frame_href (gray_href      ),
    .dataout_frame_ce   (gray_frame_ce  )
);
//wire define
wire        matrix_frame_vsync;
wire        matrix_frame_href;
wire        matrix_frame_ce;
wire [7:0]  matrix_p11; //3X3 矩阵数据
wire [7:0]  matrix_p12; 
wire [7:0]  matrix_p13;
wire [7:0]  matrix_p21; 
wire [7:0]  matrix_p22; 
wire [7:0]  matrix_p23;
wire [7:0]  matrix_p31; 
wire [7:0]  matrix_p32; 
wire [7:0]  matrix_p33;
// wire [7:0]  mid_value ;
// wire [7:0]  pos_img_Y;

//*****************************************************
//**                    main code
//*****************************************************

// assign pos_img_Y = pos_gray_href ? mid_value : 8'd0;
// assign pos_pixel_data = {pos_img_Y,pos_img_Y,pos_img_Y};

 VIP_matrix_generate_3x3_8bit u0_VIP_matrix_generate_3x3_8bit(
    .clk                (frame_clk      ), 
    .rst_n              (frame_rst_n    ),
    .per_frame_vsync    (gray_vsync     ),
    .per_frame_href     (gray_href      ), 
    .per_frame_ce       (gray_frame_ce      ),
    .per_img_Y          (gray_data  ),
    
    //输出3x3矩阵
    .matrix_frame_vsync (matrix_frame_vsync ),
    .matrix_frame_href  (matrix_frame_href  ),
    .matrix_frame_ce    (matrix_frame_ce    ),
    .matrix_p11         (matrix_p11),    
    .matrix_p12         (matrix_p12),    
    .matrix_p13         (matrix_p13),
    .matrix_p21         (matrix_p21),    
    .matrix_p22         (matrix_p22),    
    .matrix_p23         (matrix_p23),
    .matrix_p31         (matrix_p31),    
    .matrix_p32         (matrix_p32),    
    .matrix_p33         (matrix_p33)
);
region_binary   u_region_binary(
    .clk                     (frame_clk             ),
    .rst_n                   (frame_rst_n           ),
    .matrix_img_vsync        (matrix_frame_vsync    ),
    .matrix_img_href         (matrix_frame_href     ),
    .matrix_frame_ce         (matrix_frame_ce       ),
    .loc_bin_thresh_coefficient           (loc_bin_thresh_coefficient         ),
    .matrix_p11              (matrix_p11            ),
    .matrix_p12              (matrix_p12            ),
    .matrix_p13              (matrix_p13            ),
    .matrix_p21              (matrix_p21            ),
    .matrix_p22              (matrix_p22            ),
    .matrix_p23              (matrix_p23            ),
    .matrix_p31              (matrix_p31            ),
    .matrix_p32              (matrix_p32            ),
    .matrix_p33              (matrix_p33            ),
    .dataout_vsync           (bin_vsync             ),       //  processed Image data vsync valid signal
    .dataout_href            (bin_href              ),       //  processed Image data href vaild  signal
    .dataout_gray            (bin_data              ),          //  processed Image brightness output
    .dataout_frame_ce        (bin_frame_ce          ));

wire        bin_vsync   ;
wire        bin_href    ;
wire  [23:0] bin_data    ;
wire        bin_frame_ce;
wire        bin_matrix_frame_vsync;
wire        bin_matrix_frame_href;
wire        bin_matrix_frame_ce;
wire [7:0]  bin_matrix_p11; //3X3 矩阵数据
wire [7:0]  bin_matrix_p12; 
wire [7:0]  bin_matrix_p13;
wire [7:0]  bin_matrix_p21; 
wire [7:0]  bin_matrix_p22; 
wire [7:0]  bin_matrix_p23;
wire [7:0]  bin_matrix_p31; 
wire [7:0]  bin_matrix_p32; 
wire [7:0]  bin_matrix_p33;

 VIP_matrix_generate_3x3_8bit u1_VIP_matrix_generate_3x3_8bit(
    .clk                (frame_clk      ), 
    .rst_n              (frame_rst_n    ),
    .per_frame_vsync    (bin_vsync     ),
    .per_frame_href     (bin_href      ), 
    .per_frame_ce       (bin_frame_ce          ),
    .per_img_Y          (bin_data[23:16]),
    
    //输出3x3矩阵
    .matrix_frame_vsync (bin_matrix_frame_vsync ),
    .matrix_frame_href  (bin_matrix_frame_href  ),
    .matrix_frame_ce    (bin_matrix_frame_ce    ),
    .matrix_p11         (bin_matrix_p11),    
    .matrix_p12         (bin_matrix_p12),    
    .matrix_p13         (bin_matrix_p13),
    .matrix_p21         (bin_matrix_p21),    
    .matrix_p22         (bin_matrix_p22),    
    .matrix_p23         (bin_matrix_p23),
    .matrix_p31         (bin_matrix_p31),    
    .matrix_p32         (bin_matrix_p32),    
    .matrix_p33         (bin_matrix_p33)
);
bin_expa_corr   u_bin_expa_corr(
    .clk                     (frame_clk             ),
    .rst_n                   (frame_rst_n           ),
    .matrix_img_vsync        (bin_matrix_frame_vsync),
    .matrix_img_href         (bin_matrix_frame_href ),
    .matrix_frame_ce         (bin_matrix_frame_ce   ),
    .expa_corr_thresh        (expa_corr_thresh      ),
    .matrix_p11              (bin_matrix_p11        ),
    .matrix_p12              (bin_matrix_p12        ),
    .matrix_p13              (bin_matrix_p13        ),
    .matrix_p21              (bin_matrix_p21        ),
    .matrix_p22              (bin_matrix_p22        ),
    .matrix_p23              (bin_matrix_p23        ),
    .matrix_p31              (bin_matrix_p31        ),
    .matrix_p32              (bin_matrix_p32        ),
    .matrix_p33              (bin_matrix_p33        ),
    .dataout_vsync           (pos_vsync             ),       //  processed Image data vsync valid signal
    .dataout_href            (pos_href              ),       //  processed Image data href vaild  signal
    .dataout_gray            (pos_data              ),          //  processed Image brightness output
    .dataout_frame_ce        (pos_frame_ce          ));


endmodule 

rgb565转gray模块

//作者:抢公主的大魔王
//日期:24.5.15
`timescale 1ns / 1ps
module rgb2gray(
    
(* X_INTERFACE_IGNORE = "true" *)  input           cmos_frame_vsync,
(* X_INTERFACE_IGNORE = "true" *)  input [23:0]    cmos_frame_data,
(* X_INTERFACE_IGNORE = "true" *)  input           cmos_frame_href,

(* X_INTERFACE_IGNORE = "true" *)  input           cmos_frame_clk,
(* X_INTERFACE_IGNORE = "true" *)  input           cmos_rstn,//同步复位
(* X_INTERFACE_IGNORE = "true" *)  input           cmos_frame_ce,

(* X_INTERFACE_IGNORE = "true" *)  output          dataout_frame_vsync,
(* X_INTERFACE_IGNORE = "true" *)  output [7:0]    dataout_frame_data,
// (* X_INTERFACE_IGNORE = "true" *)  output [23:0]    dataout_frame_data,
(* X_INTERFACE_IGNORE = "true" *)  output          dataout_frame_href,
(* X_INTERFACE_IGNORE = "true" *)  output          dataout_frame_ce
    );
    // Y = 0.299R +0.587G + 0.114B
    // Y = (77 *R + 150*G + 29 *B)>>8
    reg [15:0] r_gray1;
    reg [15:0] g_gray1;
    reg [15:0] b_gray1;
    reg [15:0] y1;
    reg [7:0] y2;
    reg [2:0] dataout_frame_vsync_r;
    reg [2:0] dataout_frame_href_r;
    reg [2:0] dataout_frame_ce_r;


    always@(posedge cmos_frame_clk)begin
        if(!cmos_rstn)begin
            r_gray1 <= 8'h00;
            g_gray1 <= 8'h00;
            b_gray1 <= 8'h00;
        end
        else begin
            r_gray1 <= cmos_frame_data[23:16]  * 8'd77 ;
            g_gray1 <= cmos_frame_data[15:8]   * 8'd150;
            b_gray1 <= cmos_frame_data[7:0]    * 8'd29 ;
        end
    end

    always@(posedge cmos_frame_clk)begin
        if(!cmos_rstn)begin
            y1 <= 16'h0000;
        end
        else begin
            y1 <= r_gray1 + g_gray1 + b_gray1;
        end
    end

    always@(posedge cmos_frame_clk)begin
        if(!cmos_rstn)begin
            y2 <= 8'h0000;
        end
        else begin
            y2 <= y1[15:8];
        end
    end

    

    always@(posedge cmos_frame_clk)begin
        if(!cmos_rstn)begin
            dataout_frame_ce_r      <= 3'b000;
            dataout_frame_vsync_r   <= 3'b000;
            dataout_frame_href_r    <= 3'b000;
        end
        else begin
            dataout_frame_ce_r      <= {dataout_frame_ce_r[1:0]     ,cmos_frame_ce};
            dataout_frame_vsync_r   <= {dataout_frame_vsync_r[1:0]  ,cmos_frame_vsync};
            dataout_frame_href_r    <= {dataout_frame_href_r[1:0]   ,cmos_frame_href};
        end
    end
    // assign dataout_frame_data = {y2,y2,y2};
    assign dataout_frame_data = y2;
    assign dataout_frame_ce = dataout_frame_ce_r[2];
    assign dataout_frame_vsync = dataout_frame_vsync_r[2];
    assign dataout_frame_href = dataout_frame_href_r[2];


endmodule

滑动窗口数据输出模块和局部阈值二值化模块

滑动窗口数据输出模块和局部阈值二值化模块,上一篇博客已给出,没有变化,这里就不再粘贴了

二值化图像膨胀腐蚀模块

`timescale 1ns / 1ps
//作者:抢公主的大魔王
//日期:24.5.15


module bin_expa_corr(
    (* X_INTERFACE_IGNORE = "true" *)input  wire                clk                 ,
    (* X_INTERFACE_IGNORE = "true" *)input  wire                rst_n                ,
    (* X_INTERFACE_IGNORE = "true" *)input  wire      [3:0]     expa_corr_thresh       ,
    (* X_INTERFACE_IGNORE = "true" *)input wire                 matrix_img_vsync     ,
    (* X_INTERFACE_IGNORE = "true" *)input wire                 matrix_img_href      ,
    (* X_INTERFACE_IGNORE = "true" *)input wire     [7:0]       matrix_p11           ,
    (* X_INTERFACE_IGNORE = "true" *)input wire     [7:0]       matrix_p12           ,
    (* X_INTERFACE_IGNORE = "true" *)input wire     [7:0]       matrix_p13           ,
    (* X_INTERFACE_IGNORE = "true" *)input wire     [7:0]       matrix_p21           ,
    (* X_INTERFACE_IGNORE = "true" *)input wire     [7:0]       matrix_p22           ,
    (* X_INTERFACE_IGNORE = "true" *)input wire     [7:0]       matrix_p23           ,
    (* X_INTERFACE_IGNORE = "true" *)input wire     [7:0]       matrix_p31           ,
    (* X_INTERFACE_IGNORE = "true" *)input wire     [7:0]       matrix_p32           ,
    (* X_INTERFACE_IGNORE = "true" *)input wire     [7:0]       matrix_p33           ,
    (* X_INTERFACE_IGNORE = "true" *)input wire                 matrix_frame_ce ,

    (* X_INTERFACE_IGNORE = "true" *)output reg                 dataout_href,
    (* X_INTERFACE_IGNORE = "true" *)output reg      [23:0]     dataout_gray, 

    (* X_INTERFACE_IGNORE = "true" *)output reg                 dataout_vsync,
    (* X_INTERFACE_IGNORE = "true" *)output reg                 dataout_frame_ce 
 

);


//----------------------------------------------------------------------
//  calc sum of [p11,p12,p13;p21,p22,p23;p31,p32,p33]
reg             [1:0]           data_sum1;//0~3
reg             [1:0]           data_sum2;
reg             [1:0]           data_sum3;
reg             [3:0]           data_sum;//0~9

always @(posedge clk)
begin
    data_sum1 <= matrix_p11[0]  + matrix_p12[0]  + matrix_p13[0] ;
    data_sum2 <= matrix_p21[0]  + matrix_p22[0]  + matrix_p23[0] ;
    data_sum3 <= matrix_p31[0]  + matrix_p32[0]  + matrix_p33[0] ;
    data_sum  <= data_sum1 + data_sum2 + data_sum3;
end

//----------------------------------------------------------------------
//  lag 2 clocks signal sync
reg             [1:0]           matrix_img_vsync_r1;
reg             [1:0]           matrix_img_href_r1;
reg             [1:0]           matrix_edge_flag_r1;
reg             [1:0]           matrix_frame_ce_r1;

always @(posedge clk or negedge rst_n)
begin
    if(!rst_n)
    begin
        matrix_img_vsync_r1 <= 2'b0;
        matrix_img_href_r1  <= 2'b0;
        matrix_frame_ce_r1 <= 2'b0;
    end
    else
    begin
        matrix_img_vsync_r1 <= {matrix_img_vsync_r1[0],matrix_img_vsync};
        matrix_img_href_r1  <= {matrix_img_href_r1[0],matrix_img_href};
        matrix_frame_ce_r1 <= {matrix_frame_ce_r1[0],matrix_frame_ce};
    end
end

//----------------------------------------------------------------------
//  result output

always @(posedge clk or negedge rst_n)
begin
    if(!rst_n)
        dataout_gray <= 24'd0;
    else if(data_sum >= expa_corr_thresh)
        dataout_gray <= {8'd255,8'd255,8'd255};  
    else
        dataout_gray <= 24'd0;
        
end

always @(posedge clk or negedge rst_n)
begin
    if(!rst_n)
    begin
        dataout_vsync <= 1'b0;
        dataout_href  <= 1'b0;
        dataout_frame_ce<= 1'b0;
    end
    else
    begin
        dataout_vsync <= matrix_img_vsync_r1[1];
        dataout_href  <= matrix_img_href_r1[1];
        dataout_frame_ce<=matrix_frame_ce_r1[1];
    end
end
endmodule

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/628127.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Axure “情形”的使用

这篇笔记的主要内容是如果在Axure中使用“情形”&#xff0c;对应在我们的研发中就是“判断条件”的使用 Axure情形的使用Axure添加caseAxure的if &#xff0c;sele if 条件判断 条件判断不管是在研发代码中还是实际生活中&#xff0c;无处不在&#xff0c;只是表现形式不同罢…

Python专题:十五、JSON数据格式

Python的数据处理&#xff1a;JOSN 计算机的主要工作&#xff1a;处理数据 最容易处理的数据就是结构化数据 非结构化数据&#xff1a;视频&#xff0c;文件等 近些年的大数据、数据挖掘就是对互联网中的各种非结构化的数据的分析和处理 半结构化数据 明确的结构属性&…

查询中Split函数不管用?试试这个自定义函数!

hi&#xff0c;大家好&#xff01; 我们在实际的应用中会有这样的一些情况&#xff0c;获取的一些数据是由一些特殊字符连接起来的&#xff0c;比如&#xff1a;XXX汽车\SUV\EV\纯电。类似这样的数据&#xff0c;我们在应用过程中&#xff0c;需要将数据拆开&#xff0c;如果用…

16-僵尸进程和托孤进程

进程的正常退出步骤&#xff1a; 子进程调用exit()函数退出父进程调用wait()函数为子进程处理其他事情 若进程没有按正常退出步骤&#xff0c;则有可能变为僵尸进程或者托孤进程 僵尸进程 子进程退出后&#xff0c;父进程没有调用wait()函数处理身后事&#xff0c;子进程变…

Web3 ETF软件开发技术

Web3 ETF&#xff08;交易所交易基金&#xff09;是一种基于区块链技术的ETF&#xff0c;它旨在跟踪Web3资产&#xff08;例如加密货币、NFT等&#xff09;的价值表现。Web3 ETF的开发涉及到传统ETF开发的所有技术难点&#xff0c;此外还有一些独特的挑战。北京木奇移动技术有限…

短剧私域-快速引流变现

短剧的爆火&#xff0c;衍生出了很多周边项目。 比如免费看剧App&#xff0c;短剧搜索机器人&#xff0c;短剧付费圈子等等。 这些项目的本质&#xff0c;就是借助短剧的热度&#xff0c;把流量引到自己的鱼塘进行变现。 短剧机器人大家都知道&#xff0c;目前最火的一种玩法…

【计算机网络】HTTP协议详解实战抓包分析教程

文章目录 1.HTTP简介2.HTTP报文的结构3.HTTP协议中空行的作用4.uri和url的区别5.HTTP请求5.1 HTTP请求方法5.2 HTTP请求报头 6.HTTP响应6.1 状态码 7.HTTP位于应用层(基于TCP)8.非持久和持久连接8.1 非持久连接8.2 持久连接 1.HTTP简介 HTTP&#xff08;Hypertext Transfer Pr…

高效前端工程化:Monorepo、pnpm与Vue3集成实战指南

引言 在当今快速发展的前端开发领域&#xff0c;高效地管理和组织代码库成为提升开发效率的关键。随着项目规模的扩大&#xff0c;传统的单体仓库逐渐显露出局限性&#xff0c;而新兴的包管理工具如 PNPM、项目结构模式如 Monorepo 和 Turborepo 开始受到广泛关注。将教会大家…

批量下载huggingface的仓库全部权重文件

下载huggingface的仓库全部权重文件 配置和下载git-lfs **ubuntu:**sudo apt-get install git-lfs 其他&#xff1a; 下载git-lfs Releases git-lfs/git-lfs (github.com) 配置&#xff1a; export PATH$PATH://home/software/lfs/git-lfs-3.5.1/ # 其中目录为你文件夹的目…

功能安全如何在公司顺利开展?-亚远景科技

亚远景功能安全主题线上会议报名开启&#xff01; 随着汽车技术的不断发展&#xff0c;汽车系统的复杂性和交互性大幅增加&#xff0c;功能安全成为确保驾驶员、乘客及行人安全的关键。 本场功能安全线上会议&#xff0c;亚远景为汽车行业的相关人员准备了以下内容&#xff1a…

多维 HighChart

showHighChart.html <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><!-- js脚本都是官方的,后两个是highchart脚本 --><script type"text/javascript" src"jquery1.7.1.min.js"&g…

中成科信票务管理系统 SeatMapHandler.ashx SQL注入漏洞复现

0x01 产品简介 中成科信票务管理系统是专注于演出剧院、体育场馆、旅游景区、游乐园、场地活动的票务管理系统,并为特殊客户量身定制票务应用解决方案,可根据用户的要求采用不同的技术载体实现门票的防伪:二维条码门票防伪技术、RFID电子门票防伪技术、手机二维码门票技术、…

09.Hadoop的安装

Hadoop的安装 1.拖拽安装包上传到/opt/software 2.解压文件到/opt/module [itwisenode2 software]$ tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/3查看文件 drwxr-xr-x. 2 itwise itwise 4096 9月 12 2019 bin drwxr-xr-x. 3 itwise itwise 4096 9月 12 2019 etc …

基于jsp+servlet的网上商城

网上商城系统&#xff08;jspservlethtmlcssjsbootstrap&#xff09; 一、运行项目 在项目的doc文件夹下&#xff0c;有文档&#xff0c;教您怎么启动项目。 二、运行截图 a.项目前端页面 b.后台登录界面 c.后台展示界面 三、用户名和密码 前台的用户名是&#xff1a;mor…

07. 【Java教程】Java 集成开发环境 - IntelliJ IDEA

本小节我们将介绍如何在我们的电脑上安装并配置开发工具&#xff1a;IntelliJ IDEA 1. IDE 概述 1.1 IDE 是什么&#xff1f; IDE 即 Integrated Development Environment 的缩写&#xff0c;中文意为集成开发环境&#xff0c;是用于提供程序开发环境的应用程序&#xff0c;一…

stl学习以及abc比赛例题

1.引例 一提到查找&#xff0c;我们一上来想的肯定是find()函数或者search()函数&#xff0c;但是这种查找的底层逻辑终究是用顺序查找的方式&#xff0c;运行的时间成本非常高昂&#xff0c;所以平时能不用就不用&#xff0c;比赛的时候用这种查找和自己while遍历&#xff0c…

全域运营平台是什么?优缺点有哪些?

当下&#xff0c;全域运营赛道逐渐兴盛&#xff0c;全域运营服务商的数量也开始呈现爆发趋势。在此背景下&#xff0c;很多人都对某些品牌的全域运营平台优缺点产生了浓厚的兴趣。由于小编只使用过微火全域运营平台&#xff0c;因此&#xff0c;本期会着重分析微火运营平台的优…

python 视频转mp3

今天分享一个 Python 脚本&#xff0c;这个 Python脚本借助moviepy和FFmpeg&#xff0c;将指定的视频文档转码为mp3文档。 本Python脚本借助Everything的强大搜索能力&#xff0c;在协助用户搜索和定位视频文件方面提供了极大的便利。 本Python脚本默认将转码的文件与源视频文…

ORACLE ODAX9-2的一个误告警Affects: /SYS/MB的分析处理

在运维的多套ORACLE ODAX9-2版本&#xff0c;都遇到了一个计算节点的告警&#xff1a;Description: The service Processor poweron selftest has deteced a problem. Probabity;:100, UulD:cd1ebbdf-f099-61de-ca44-ef646defe034, Resource:/SYS/MB,&#xff1b;此告警从描述上…

Go系列:git status 高级技巧

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…