opencv-python的简单练习

news2024/12/16 3:35:47

题目1.读取一张彩色图像并将其转换为灰度图。

import cv2
# 读取图片文件
img = cv2.imread('./1.png')

# 将原图灰度化
img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

# 输出图片
cv2.imshow('img',img)
cv2.imshow('img_g',img_gray)
# 进行阻塞
cv2.waitKey(0)

题目2:二值化与形态学操作‌

编写程序,读取一张彩色图像【flower.png】,将其转换为灰度图,然后进行二值化处理。

接着,对二值化后的图像执行腐蚀和膨胀操作,并显示处理前后的图像。

二值化图像

腐蚀图像

 

膨胀图像

‌题目3:图像变换与颜色识别‌

编写程序,读取一张彩色图像,执行以下操作:

  1. 将图像缩放至指定大小(例如,宽度和高度都缩小为原来的一半)。
  2. 对缩放后的图像应用仿射变换,实现图像的旋转(例如,旋转45度)。
  3. 将图像从BGR颜色空间转换为HSV颜色空间,并提取出特定的颜色范围(例如,提取黄色区域)。
  4. 显示处理后的图像,并在图像上标记出识别到的颜色区域。

import cv2
import numpy as np

img = cv2.imread('./2.png')
img = cv2.resize(img,dsize=None,fx=0.5,fy=0.5)

# 获取放射变换矩阵
M =cv2.getRotationMatrix2D(center=(img.shape[1]/2,img.shape[0]/2), # 旋转的中心
                             angle=45, # 旋转的角度
                             scale=0.5) # 缩放 返回一个旋转矩阵

img_ro = cv2.warpAffine(img,M,(img.shape[0],img.shape[1]),
                        flags = cv2.INTER_LINEAR, # 插值的方式
                        borderMode=cv2.BORDER_REFLECT_101) # 填充边缘的方式

# 将原图转换成hsv
img_hsv = cv2.cvtColor(img_ro,cv2.COLOR_BGR2HSV)
# 制作掩膜
# 选取颜色 这里选择黄色
hsv_min = np.array([26,43,46],dtype=np.float32)
hsv_max = np.array([34,255,255],dtype=np.float32)
mask = cv2.inRange(img_hsv,hsv_min,hsv_max)

# 将掩膜与原图进行与运算
img_color = cv2.bitwise_and(img_ro,img_ro,mask=mask)

# 利用掩膜识别边缘
c,h =cv2.findContours(mask,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)

#用红线在原图标识
cv2.drawContours(img_ro,c,-1,(0,0,255),2)







cv2.imshow('image',img_ro)
cv2.imshow('img_color',img_color)
cv2.waitKey(0)

‌题目4:图像矫正

编写程序,读取一张彩色图像,执行以下操作

  1. 找到原图 和目标图的四个点,获取透视变换矩阵
  2. 对图像应用透视变换,实现油画区域的矫正

import cv2
import numpy as np


# 读取图像
img = cv2.imread('./youhua.png')
# 高斯滤波
img_blur = cv2.GaussianBlur(img,(3,3),1)

# 灰度化
img_gray = cv2.cvtColor(img_blur,cv2.COLOR_BGR2GRAY)

# 二值化
_,img_binary = cv2.threshold(img_gray,127,255,cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)

# 寻找轮廓
contours,_ = cv2.findContours(img_binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cnt = sorted(contours,key=cv2.contourArea,reverse=True)[0]
img_copy = img.copy()

img_copy = cv2.drawContours(img_copy,[cnt],-1,(0,0,255),2)


# 找到card的轮廓  做多边形逼近  获取四个顶点
arc_len = cv2.arcLength(cnt,True)
approx = cv2.approxPolyDP(cnt,float(0.04)*arc_len,True)
img_draw = img.copy()
# approx

points1 = np.float32(approx).reshape(-1,2)
print(approx)
points2 = np.float32([
        [max(points1[:, 0]), min(points1[:, 1])],  # 右上角
        [min(points1[:, 0]), min(points1[:, 1])],  # 左上角
        [min(points1[:, 0]), max(points1[:, 1])],  # 左下角
        [max(points1[:, 0]), max(points1[:, 1])],  # 右下角
        ]
        )

M = cv2.getPerspectiveTransform(points1,points2)
img_draw = cv2.warpPerspective(img_draw,M,(img.shape[1],img.shape[0]))


# 画轮廓

# 获取透视变换矩阵
# 进行透视变换

# 输出图形
cv2.imshow('img',img)
cv2.imshow('img_copy',img_copy)
cv2.imshow('img_draw',img_draw)
cv2.waitKey(0)

 

题目5:边缘检测

请编写一段Python代码,使用OpenCV库对一张图像进行以下处理:

  1. 将图像转换为灰度图。
  2. 使用高斯滤波器平滑图像,内核大小为5x5,标准差为1。
  3. 使用Canny边缘检测算法检测图像边缘,阈值1为50,阈值2为150。
  4. 在检测到的边缘图像上绘制轮廓,轮廓颜色为红色,厚度为2。

 

import cv2
img = cv2.imread('./picture.png')
# 灰度化
img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

# 高斯滤波
img_blur = cv2.GaussianBlur(img_gray,(5,5),1)
# 边缘检测
img_canny = cv2.Canny(img_blur,50,150)
c,h = cv2.findContours(img_canny,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(img,c,-1,(0,0,255),2)

cv2.imshow('image',img)

cv2.imshow('img_canny',img_canny)
cv2.waitKey(0)


题目6:车牌识别预处理 

假设你正在开发一个车牌识别系统,首先需要从图像中识别出车牌区域。请描述并编写代码实现以下步骤:

  1. 读取一张包含车牌的图像。
  2. 将图像转换为灰度图以简化处理。
  3. 使用高斯滤波器平滑图像,减少噪声干扰。
  4. 应用Canny边缘检测算法检测图像中的边缘。
  5. 查找图像中的轮廓。
  6. 逐一遍历轮廓。
  7. 设定一个面积双阈值,只保留面积在该阈值的轮廓。
  8. 计算这些轮廓的长宽比,长宽比ratio在2到5.5之间的,在原图上用矩形框标出,这些轮廓可能是车牌的候选区域。

import cv2
import matplotlib.pyplot as plt
import numpy as np

# 读取车牌图像
img =cv2.imread('./img_1.png')

# 转化为单通道图像便于处理
img= cv2.resize(img,dsize=None,fx=0.5,fy=0.5)

img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)


# 使用高斯滤波平滑图像,减少噪声干扰
img_blur = cv2.GaussianBlur(img_gray,(5,5),1)

# 使用canny检测图像边缘
img_canny =cv2.Canny(img_blur,50,150)

# 查找轮廓点集
c,_ = cv2.findContours(img_canny,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)
# 遍历轮廓 寻找面积合适的图像
for cnt in c:
    if cv2.contourArea(cnt)<900 or cv2.contourArea(cnt)>81000000:
        continue
    else:

        # 计算长宽比
        arc_len = cv2.arcLength(cnt,  # 轮廓
                                True)  # 表示轮廓是否闭合
        approx = cv2.approxPolyDP(cnt,  # 轮廓
                                  float(0.004) * arc_len,  # 这是从原始轮廓到近似多边形的最大距离,决定了逼近精度
                                  True  # 是否闭合
                                  )  # 返回逼近多边形的 坐标点集

        x, y, w, h = cv2.boundingRect(approx)
        ratio = w / h
        if 2.0 < ratio < 4.5:  # 设定范围减免因图像扭曲产生的误差

            cv2.rectangle(img,
                          [x, y],  # 左上角坐标
                          [x + w, y + h],  # 右下角坐标
                          (0, 0, 255),  # 矩形颜色
                          2  # 矩形线条粗细

                          )

cv2.imshow('img',img)
cv2.imshow('img_b', img_canny)
cv2.waitKey(0)

 

交通信号灯识别‌:

你正在开发一个自动驾驶系统,需要识别交通信号灯的颜色(红、黄、绿)。请设计一个简化的流程,说明如何使用OpenCV来识别交通信号灯的颜色。

思路分析‌:

  1. 读取包含交通信号灯的图像。
  2. 转换图像到HSV颜色空间。
  3. 分别为红、黄、绿三种颜色定义HSV范围,并创建三个掩膜。
  4. 对每个掩膜进行轮廓检测,识别出可能的信号灯区域。

import cv2
import numpy as np
img = cv2.imread('./demo111.png')

# 转化hsv空间
img_hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)

# 红色空间
hsv_min2 = np.array([0,43,46])
hsv_max2 = np.array([10,255,255])
hsv_min1 = np.array([156,43,46])
hsv_max1 = np.array([180,255,255])
mask_1 = cv2.inRange(img_hsv,hsv_min1,hsv_max1)
mask_2 = cv2.inRange(img_hsv,hsv_min2,hsv_max2)
mask_red = cv2.bitwise_or(mask_1,mask_2)
mask_red = cv2.GaussianBlur(mask_red,(3,3),1)
c,_ = cv2.findContours(mask_red,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
c = sorted(c,key=cv2.contourArea,reverse=True)[1]
img = cv2.drawContours(img,[c],-1,(0,0,255),2)

# 绿色空间
hsv_min3 = np.array([35,43,46])
hsv_max3 = np.array([99,255,255])
mask_green = cv2.inRange(img_hsv,hsv_min3,hsv_max3)
mask_green = cv2.GaussianBlur(mask_green,(3,3),1)
c,_ = cv2.findContours(mask_green,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
c = sorted(c,key=cv2.contourArea,reverse=True)[0]
img = cv2.drawContours(img,[c],-1,(0,255,0),2)

# 黄色空间
hsv_min4 = np.array([11,20,20])
hsv_max4 = np.array([34,255,255])
mask_yellow = cv2.inRange(img_hsv,hsv_min4,hsv_max4)
mask_yellow = cv2.GaussianBlur(mask_yellow,(3,3),1)
c,_ = cv2.findContours(mask_yellow,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
c = sorted(c,key=cv2.contourArea,reverse=True)[0]
img = cv2.drawContours(img,[c],-1,(0,255,255),2)

mask = cv2.bitwise_or(mask_red,mask_yellow,mask_green)
img_mask_color = cv2.bitwise_and(img,img,mask=mask)

cv2.imshow('image',img)
cv2.imshow('mask',mask)
cv2.imshow('img_mask_color',img_mask_color)

cv2.waitKey(0)

 

在一家生产彩色玩具的工厂中,需要检测产品是否按照正确的颜色进行生产。请设计一个使用OpenCV的自动化检测系统,该系统能够识别并报告不符合颜色标准的产品。

‌思路分析‌:

  1. 设定产品的标准颜色范围(HSV值)。
  2. 使用摄像头或图像文件获取待检测产品的图像。
  3. 转换图像到HSV颜色空间。
  4. 为每种标准颜色创建掩膜,并与产品图像进行比对。
  5. 识别出颜色不符合标准的产品,并记录或报告。

 

import cv2
import numpy as np
img = cv2.imread('./duck.png')
img = cv2.resize(img,dsize=None,fx=0.4,fy=0.4)
# 转化hsv空间
img_hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)

# 红色空间
hsv_min2 = np.array([0,43,46])
hsv_max2 = np.array([10,255,255])
hsv_min1 = np.array([156,43,46])
hsv_max1 = np.array([180,255,255])
mask_1 = cv2.inRange(img_hsv,hsv_min1,hsv_max1)
mask_2 = cv2.inRange(img_hsv,hsv_min2,hsv_max2)
mask_red = cv2.bitwise_or(mask_1,mask_2)
mask_red = cv2.GaussianBlur(mask_red,(3,3),1)

# 绿色空间
hsv_min3 = np.array([35,43,46])
hsv_max3 = np.array([99,255,255])
mask_green = cv2.inRange(img_hsv,hsv_min3,hsv_max3)
mask_green = cv2.GaussianBlur(mask_green,(3,3),1)

# 黑色空间
hsv_min3 = np.array([0,0,40])
hsv_max3 = np.array([180,255,46])
mask_black = cv2.inRange(img_hsv,hsv_min3,hsv_max3)
mask_black = cv2.GaussianBlur(mask_green,(3,3),1)

# 蓝色空间
hsv_min3 = np.array([78,43,46])
hsv_max3 = np.array([124,255,255])
mask_blue = cv2.inRange(img_hsv,hsv_min3,hsv_max3)
mask_blue = cv2.GaussianBlur(mask_blue,(3,3),1)

mask = cv2.bitwise_or(mask_red,mask_black,mask_blue)

mask_color = cv2.bitwise_and(img,img,mask=mask)

c,_ = cv2.findContours(mask,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)
img = cv2.drawContours(img,c,-1,(0,255,255),2)


cv2.imshow('image',img)
cv2.imshow('mask',mask)
cv2.imshow('img_mask_color',mask_color)

cv2.waitKey(0)

图像预处理与特征提取‌

  1. 将图像转换为灰度图
  2. 对灰度图进行二值化处理
  3. 使用形态学变换去除噪声【开运算】
  4. 检测图像中的边缘
  5. 查找并绘制图像中的轮廓
  6. 逐一遍历轮廓,输出所有四边形的周长 和 面积。

 

 

import cv2
import numpy as np


# 读取图片
img = cv2.imread('./img_2.png')

# 灰度化  二值化
img_gary = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
_,img_binary = cv2.threshold(img_gary,127,255,cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)

# 高斯滤波
img_blur = cv2.GaussianBlur(img_binary,(3,3),1)


# 开运算消除噪点 腐蚀和膨胀
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(5,5))
img_erode = cv2.erode(img_blur,kernel)
img_dilate = cv2.dilate(img_erode,kernel)


# 寻找轮廓
contours,_ = cv2.findContours(img_dilate,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)

# 绘制轮廓
img_copy = img.copy()

# 循环遍历轮廓
for cnt in contours:
    M = cv2.moments(cnt)
    if int(M['m00'] )== 0:
        continue
    else:
        # 排序非常小的轮廓后,寻找与图形相似形状
        # 把周长的几倍长度的线段作为一条边
        arc_len = cv2.arcLength(cnt,   # 轮廓
                      True) # 表示轮廓是否闭合
        approx = cv2.approxPolyDP(cnt, # 轮廓
                         float(0.04)*arc_len, #这是从原始轮廓到近似多边形的最大距离,决定了逼近精度
                         True # 是否闭合
                         ) # 返回逼近多边形的 坐标点集
        # 进行形状判断


        if len(approx) == 4:
            # 需要进一步判断是正方形还是非正方形
            x,y,w,h = cv2.boundingRect(approx)
            ratio = w/h

            shape = 'rectangle'
            color = (0,255,0)

            img_copy = cv2.drawContours(img_copy, contours, -1, (0, 0, 0), 1)
            str1 = shape+'area:'+str(cv2.contourArea(cnt))
            str2 = 'len:'+str(cv2.arcLength(cnt,True))
            # 先计算轮廓形状的中心坐标
            cX = int(M['m10']/M['m00'])
            cY = int(M['m01']/M['m00'])
            # 将识别到的轮廓形状的文字写道轮廓的重点处youhua.png
            cv2.putText(img_copy, # 图片
                    str1,  # 要添加的文字字符串
                    (cX,cY), # 要输入文字的坐标
                    cv2.FONT_HERSHEY_SIMPLEX,# 字体类型
                    0.4, # 缩放
                    color)
            cv2.putText(img_copy,  # 图片
                        str2,  # 要添加的文字字符串
                        (cX, cY+15),  # 要输入文字的坐标
                        cv2.FONT_HERSHEY_SIMPLEX,  # 字体类型
                        0.4,  # 缩放
                        color)











# 输出数据
cv2.imshow('image',img)
cv2.imshow('img_copy',img_copy)
cv2.waitKey(0)












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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

go-zero(十三)使用MapReduce并发

go zero 使用MapReduce并发 一、MapReduce 介绍 MapReduce 是一种用于并行计算的编程模型&#xff0c;特别适合在大规模数据处理场景中简化逻辑代码。 官方文档&#xff1a; https://go-zero.dev/docs/components/mr 1. MapReduce 的核心概念 在 MapReduce 中&#xff0c;主…

探索React与Microi吾码的完美结合:快速搭建项目,低代码便捷开发教程

一、摘要 在当今的数字化时代&#xff0c;软件开发就像是一场探险&#xff0c;每个开发者都是探险家&#xff0c;探索着代码的奥秘。React作为前端开发的领军框架&#xff0c;其组件化和高效的渲染机制为开发者提供了强大的工具。而Microi吾码低代码平台的出现&#xff0c;则为…

SAP FICO物料分类账实操

物料分类账所涉及到的差异从采购入库的时候就可能已经产生&#xff0c;接下来从创建物料主数据开始对可能产生差异地方进行分析。其中有些操作步骤在标准价格估算这一篇博文中已经有过演示&#xff0c;可以先做了解。 其中的某些创建在有直接可用的情况下是非必须的&#xff0…

WordPress酱茄主题 开源版 博客资讯自媒体网站模板

一款免费开源的WordPress主题&#xff0c;主题专为WordPress博客、资讯、自媒体网站而设计 运行环境 支持WordPress版本&#xff1a;5.6 兼容Chrome、Firefox、Safari等主流浏览器 支持设备&#xff1a;响应式布局&#xff0c;不同设备不同展示效果 服务器环境建议&#x…

【HF设计模式】03-装饰者模式

声明&#xff1a;仅为个人学习总结&#xff0c;还请批判性查看&#xff0c;如有不同观点&#xff0c;欢迎交流。 摘要 《Head First设计模式》第3章笔记&#xff1a;结合示例应用和代码&#xff0c;介绍装饰者模式&#xff0c;包括遇到的问题、遵循的 OO 原则、达到的效果。 …

Linux查看是否有www-data用户,如果没有添加一个

在 Linux 系统中&#xff0c;www-data 用户通常是用来运行 Web 服务&#xff08;如 Nginx 或 Apache&#xff09;的。如果你想检查系统中是否已经存在 www-data 用户&#xff0c;并在没有的情况下添加一个&#xff0c;可以按照以下步骤操作&#xff1a; ### 1. 检查 www-data …

23.模块和包

模块 模块Module,是一个python文件&#xff0c;以.py结尾。 模块能定义函数、类和变量。 模块导入 模块在使用前需要先导入 [from 模块名] import [模块 | 类 | 变量 | 函数 | *] [as 别名] import 模块 import time print("start...") time.sleep(5) print(&…

IDEA报错:无效的源发行版、无效的目标发行版

1. 无效的源发行版 创建项目的时候&#xff0c;会遇见这个报错&#xff0c;原因就是编译的JDK版本与发布版本不一致。 解决方法&#xff1a; 1.1. 找到问题所在地 英文&#xff1a;File -> Project Structure ->Project Settings 中文&#xff1a;文件->项目结构 …

2025年,客服知识库与人工智能的结合

随着人工智能&#xff08;AI&#xff09;技术的飞速发展&#xff0c;传统客服模式正在经历前所未有的变革。特别是在2025年&#xff0c;客服知识库与AI的深度融合&#xff0c;不仅极大地提升了客服处理的效率与准确性&#xff0c;还为用户带来了更加个性化、高效的服务体验。 …

JVM 双亲委派模型以及垃圾回收机制

目录 1. JVM 内存区域划分 2. JVM 中类加载的过程 1) 类加载的基本流程 2) 双亲委派模型 3. JVM 中垃圾回收机制 1) 找到垃圾 a) 引用计数 b) 可达性分析 2) 释放垃圾 1. JVM 内存区域划分 一个运行起来的 Java 进程&#xff0c;其实就是一个 JVM 虚拟机。 而进程是…

微信小程序跳转其他小程序以及跳转网站

一、跳转其他小程序 1.1 知道appid和页面路径 wx.navigateToMiniProgram({appId: appid, // 替换为目标小程序 AppIDpath: pathWithParams, // 小程序路径envVersion: release, // 开发版、体验版或正式版success(res) {console.log("跳转到其他小程序成功&#xff01;&q…

学习笔记:从ncsi/nc-si协议和代码了解网络协议的设计范式

学习笔记&#xff1a;从ncsi/nc-si协议和代码了解网络协议的设计范式 参考文档&#xff1a; https://www.dmtf.org/standards/published_documents https://www.dmtf.org/dsp/DSP0222 https://www.dmtf.org/sites/default/files/standards/documents/DSP0222_1.2.0.pdf参考代…

深度学习训练参数之学习率介绍

学习率 1. 什么是学习率 学习率是训练神经网络的重要超参数之一&#xff0c;它代表在每一次迭代中梯度向损失函数最优解移动的步长&#xff0c;通常用 η \eta η 表示。它的大小决定网络学习速度的快慢。在网络训练过程中&#xff0c;模型通过样本数据给出预测值&#xff0…

【数据结构——线性表】单链表的基本运算(头歌实践教学平台习题)【合集】

目录&#x1f60b; 任务描述 相关知识 测试说明 我的通关代码: 测试结果&#xff1a; 任务描述 本关任务&#xff1a;编写一个程序实现单链表的基本运算。 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a;初始化线性表、销毁线性表、判定是否为空表、求线性…

利用ROS的Camera Calibration工具进行D435相机标定

一、安装ROS Camera Calibration sudo apt-get install ros-melodic-camera-calibration 二、安装realsense-ros 安装ROS Wrapper for Intel RealSense&#xff08;realsense-ros&#xff09; 三、启动数据读取节点 ctrlaltt打开终端 cd catkin_ws_ur source devel/setu…

让文案生成更具灵活性/chatGPT新功能canvas画布编辑

​ ​ OpenAI最近在2024年12月发布了canvas画布编辑功能&#xff0c;这是一项用途广泛的创新工具&#xff0c;专为需要高效创作文案的用户设计。 无论是职场人士、学生还是创作者&#xff0c;这项功能都能帮助快速生成、优化和编辑文案&#xff0c;提升效率的同时提高内容质量…

C# 网络编程--关于UDP 通信(二)

UDP (User Datagram Protocol) 是一种无连接的传输层协议&#xff0c;主要用于支持数据报文的传输。它的主要特点包括简单、高效、不保证可靠性和顺序。 1.UDP协议基本概念 1.udp基于IP的简单的协议&#xff0c;不可靠的协议 2.优点&#xff1a;简单、 轻量化、 传输速度高、…

Spring Boot 集成 MyBatis 全面讲解

Spring Boot 集成 MyBatis 全面讲解 MyBatis 是一款优秀的持久层框架&#xff0c;与 Spring Boot 集成后可以大大简化开发流程。本文将全面讲解如何在 Spring Boot 中集成 MyBatis&#xff0c;包括环境配置、基础操作、高级功能和最佳实践。 一、MyBatis 简介 1. SqlSession …

解决Jmeter HTTP Cookie管理器cookie不生效

解决Jmeter HTTP Cookie管理器cookie不生效问题 解决Jmeter HTTP Cookie管理器cookie不生效问题1、设置Jmeter HTTP Cookie管理器cookie后&#xff0c;发起的请求显示[no cookies]jmeter问题复现&#xff1a;这里同样使用postman进行重试&#xff0c;发现是可以正常获取数据的&…

freeswitch(开启支持MCU视频会议,使用mod_av模块)

亲测版本centos 7.9系统–》 freeswitch1.10.9 本人freeswitch安装路径(根据自己的路径进入) /usr/local/freeswitch/etc/freeswitch场景说明: 有些场景想使用视频会议MCU融合画面进行开会使用方法: 第一步:下载插件 yum install -y epel-release yum install