19.java openCV4.x 入门-Imgproc之图形绘制

专栏简介

💒个人主页
📖心灵鸡汤📖

我们唯一拥有的就是今天,唯一能把握的也是今天


建议把本文当作笔记来看,据说专栏目录里面有相应视频🤫
📰专栏目录

Imgproc之图像绘制

  • 一、直线绘制
    • 字段
    • 1.带箭直线绘制
    • 2.普通直线绘制
      • 1.line
      • 2.polylines
  • 二、矩形绘制
  • 三、圆绘制
  • 四、椭圆(椭圆弧)绘制
  • 五、多边形填充
    • 1.单个填充
    • 2.多个填充
  • 六、标记绘制
    • 1.字段
    • 2.方法介绍
  • 七、文本绘制
    • 1.字段
    • 2.方法介绍
  • 八、相关扩展方法
    • 1.线段裁定
    • 2.椭圆弧转换为多段线
    • 3.计算字体尺寸比例

本节内容比较简单,但是很重要

一、直线绘制

  线段被图像边界裁剪。对于非抗锯齿的整数坐标线,使用8-连接或4-连接的Bresenham算法。粗线以圆角结束绘制。抗锯齿线使用高斯滤波器绘制。

字段

LINE_4 使用4点线段。这通常用于表示直线,使用起点和终点坐标
LINE_8使用8点线段。这提供了更多的控制点,可以用于更精确地表示曲线或直线
LINE_AA使用抗锯齿线段。抗锯齿技术用于平滑线条的边缘,使其看起来更平滑和自然

1.带箭直线绘制

1.在给定的图像上,从第一个点到第二个点绘制一个箭头线段

arrowedLine(Mat img, Point pt1, Point pt2, Scalar color, int thickness, int line_type, int shift, double tipLength)
参数:
img 要绘制线段的图像
pt1线段的起始点坐标
pt2 线段的终点坐标
color 线段的颜色
thickness 线段的粗细
line_type线段的类型。 参见 #LINE_*
shift坐标点的小数位数
tipLength箭头尖端的长度与箭头长度之间的关系
        //创建一个图像Mat mat = new Mat(400,400, CvType.CV_8UC3);//设置颜色mat.setTo(new Scalar(0,0,0));// 定义线段的起始点和终点坐标Point pt1 = new Point(50, 50);Point pt2 = new Point(350, 350);// 定义线段的颜色Scalar color = new Scalar(0, 0, 255);int lineType=Imgproc.LINE_AA;Imgproc.arrowedLine(mat,pt1,pt2,color,10, lineType, 0, 0.1);HighGui.imshow("mat",mat);HighGui.waitKey();

结果:
请添加图片描述

2.普通直线绘制

1.line

1.图像上绘制直线(线段被图像边界裁剪)

line(Mat img, Point pt1, Point pt2, Scalar color, int thickness, int lineType, int shift)
参数:
img 要绘制线段的图像
pt1线段的起始点坐标
pt2 线段的终点坐标
color 线段的颜色
thickness 线段的粗细
line_type线段的类型。 参见 #LINE_*
shift坐标点的小数位数
        //创建矩阵Mat img = new Mat(200,300, CvType.CV_8UC3,new Scalar(0,0,0) );//定义线段开始结束坐标pt1Point pt1 = new Point(20,20);Point pt2 = new Point(100,100);Point pt3 = new Point(150,100);//定义绘制的颜色Scalar scalar= new Scalar(0,255,0);//定义线条粗细int thickness = 2;//定义线条类型int lineType=Imgproc.LINE_AA;//定义点坐标小数位数int shift=0;Imgproc.line(img,pt1,pt2,scalar,thickness,lineType,shift);Imgproc.line(img,pt2,pt3,scalar,thickness,lineType,shift);//显示HighGui.imshow("img",img);HighGui.waitKey();

结果:

在这里插入图片描述

2.polylines

1.绘制多段线

polylines(Mat img, java.util.List pts, boolean isClosed, Scalar color, int thickness, int lineType, int shift)
参数:
img 要绘制线段的图像
pts包含多段线顶点的 java.util.List 对象。每个 MatOfPoint 对象表示多段线的一个单独部分
isClosed一个布尔值,指示多段线是否闭合。如果为 true,则多段线闭合;如果为 false,则不闭合
color 线段的颜色
thickness 线段的粗细
line_type线段的类型。 参见 #LINE_*
shift坐标点的小数位数
 		Mat mat = new Mat(500,500, CvType.CV_8UC3);mat.setTo(new Scalar(255,255,255));List<MatOfPoint> pts = new ArrayList<>();MatOfPoint point = new MatOfPoint();point.fromArray(new Point(50,50),new Point(150,90),new Point(80,180),new Point(250,250));pts.add(point);Imgproc.polylines(mat,pts,false,new Scalar(0,255,0),2,Imgproc.LINE_AA,0);HighGui.imshow("mat",mat);HighGui.waitKey();

在这里插入图片描述

二、矩形绘制

1.矩形绘制(填充)

rectangle(Mat img, Point pt1, Point pt2, Scalar color, int thickness, int lineType, int shift)
参数:
img 要绘制线段的图像
pt1 矩形的一个角的坐标
pt2与 pt1 相对的矩形角的坐标
color 矩形的颜色
thickness 构成矩形的线条的厚度,-1则表示填充矩形
line_type线段的类型。 参见 #LINE_*
shift坐标点的小数位数
Mat mat = new Mat(300,300, CvType.CV_8UC3);
mat.setTo(new Scalar(255,255,255));Imgproc.rectangle(mat,new Point(50,50),new Point(250,250),new Scalar(0,250,0),4,Imgproc.LINE_AA,0);HighGui.imshow("mat",mat);
HighGui.waitKey();

结果:
在这里插入图片描述

2.矩形绘制(填充)

rectangle(Mat img, Rect rec, Scalar color, int thickness, int lineType, int shift)
参数:
img 要绘制线段的图像
recRect对象,表示矩形的位置和大小
color 矩形的颜色
thickness 构成矩形的线条的厚度,-1则表示填充矩形
line_type线段的类型。 参见 #LINE_*
shift坐标点的小数位数

三、圆绘制

1.绘制一个圆

circle(Mat img, Point center, int radius, Scalar color, int thickness, int lineType, int shift)
参数:
img 要绘制圆的图像
center 圆心的坐标(x, y)
radius 圆的半径
color 圆的颜色
thickness圆的线条厚度。如果为正数,表示绘制圆的外轮廓;如果为负数,表示绘制填充圆
line_type圆的边界类型。 参见 #LINE_*
shift圆心和半径值的坐标的小数位数
   //创建矩阵Mat img = new Mat(300,420, CvType.CV_8UC3,new Scalar(255,255,255));//定义坐标Point point = new Point(100,100);//定义半径int radius=50;//定义颜色Scalar scalar = new Scalar(255, 0, 0);//绘制圆Imgproc.circle(img,point,radius,scalar,4,Imgproc.LINE_AA,0);//蓝色圆//====在上方的基础上绘制一个五环===//定义坐标Point point1 = new Point(210,100);Point point2 = new Point(320,100);Point point3 = new Point(150,160);Point point4 = new Point(260,160);//定义颜色Scalar scalar1 = new Scalar(0, 0, 0);Scalar scalar2 = new Scalar(0,0,255);Scalar scalar3 = new Scalar(0,215,255);Scalar scalar4 = new Scalar(0,215,0);//绘制圆Imgproc.circle(img,point1,radius,scalar1,4,Imgproc.LINE_AA,0);//黑色圆Imgproc.circle(img,point2,radius,scalar2,4,Imgproc.LINE_AA,0);//红色圆Imgproc.circle(img,point3,radius,scalar3,4,Imgproc.LINE_AA,0);//黄色圆Imgproc.circle(img,point4,radius,scalar4,4,Imgproc.LINE_AA,0);//绿色圆//显示HighGui.imshow("img",img);HighGui.waitKey();

结果:
在这里插入图片描述

四、椭圆(椭圆弧)绘制

  使用分段线性曲线近似椭圆弧边界。如果您需要更多控制椭圆渲染,您可以使用 #ellipse2Poly 获取曲线,然后使用 #polylines 渲染或使用 #fillPoly 填充。如果您使用该函数的第一个变体并希望绘制整个椭圆而不是弧 ,请传递 startAngle=0 和 endAngle=360。如果 startAngle 大于 endAngle,它们将被交换。下面的图说明了绘制蓝色弧的参数的含义
在这里插入图片描述

ellipse(Mat img, Point center, Size axes, double angle, double startAngle, double endAngle, Scalar color, int thickness, int lineType, int shift)
参数:
img 要绘制椭圆的图像
center 椭圆的中心点
axes 椭圆的两个轴的长度(Size类型,包含宽度和高度)
angle 椭圆的旋转角度(以度为单位)
startAngle 椭圆弧的起始角度(以度为单位)
endAngle 椭圆弧的结束角度(以度为单位)
color椭圆的颜色
thickness这是线条的厚度。如果设置为负数,则会填充椭圆
line_type边界类型。 参见 #LINE_*
shift点坐标中的小数位数
    //创建空白图像Mat mat = new Mat(500,500, CvType.CV_8UC3,new Scalar(255,255,255));//椭圆中心点Point point = new Point(250,250);//轴长Size axes = new Size(200,150);//旋转角度double angle = 0;//起始角度double startAngle= 0;//结束角度double endAngle = 360;Imgproc.ellipse(mat,point,axes,angle,startAngle,endAngle,new Scalar(0,200,0),2,Imgproc.LINE_8,0);//绘制椭圆double vals[]={200,200,100,100,0};RotatedRect box = new RotatedRect(vals);Imgproc.ellipse(mat,box,new Scalar(0,0,255),2,Imgproc.LINE_8);Imgcodecs.imwrite(FileUtil.resPath + "imgproc/ellipse.jpg",mat);

结果:

在这里插入图片描述

2.椭圆绘制

ellipse(Mat img, RotatedRect box, Scalar color, int thickness, int lineType)
参数:
img 要绘制椭圆的图像
box 这是一个 RotatedRect 对象,表示椭圆的边界框
axes 椭圆的两个轴的长度(Size类型,包含宽度和高度)
angle 椭圆的旋转角度(以度为单位)
startAngle 椭圆弧的起始角度(以度为单位)
endAngle 椭圆弧的结束角度(以度为单位)
color椭圆的颜色
thickness这是线条的厚度。如果设置为负数,则会填充椭圆
line_type边界类型。 参见 #LINE_*
shift点坐标中的小数位数

五、多边形填充

1.单个填充

  fillConvexPoly 用于绘制填充的凸多边形它不仅可以填充凸多边形,还可以填充任何单调的非自相交多边形,即轮廓最多与每条水平线(扫描线)相交两次的多边形(尽管其顶部和/或底部边缘可能是水平的)

fillConvexPoly(Mat img, MatOfPoint points, Scalar color, int lineType, int shift)
参数:
img 输入/输出图像
points 含多边形顶点坐标的 MatOfPoint 对象
color 填充多边形时使用的颜色
line_type边界类型。 参见 #LINE_*
shift点坐标中的小数位数
        Mat mat = new Mat(500,500, CvType.CV_8UC3,new Scalar(255,255,255));MatOfPoint matOfPoint = new MatOfPoint();matOfPoint.fromArray(new Point(100 ,100 ),new Point(400 ,100 ),new Point(400 ,400 ),new Point(100 ,400 ));//填充多边形Imgproc.fillConvexPoly(mat,matOfPoint,new Scalar(0,255,0),Imgproc.LINE_8,0);HighGui.imshow("fill",mat);HighGui.waitKey();mat.release();HighGui.destroyAllWindows();

2.多个填充

  fillPoly 用于填充由多个多边形轮廓所包围的区域。该函数可以填充复杂的区域,例如包含空洞的区域、具有自交点(即某些部分相互交叉)的轮廓等等.

fillPoly(Mat img, java.util.List pts, Scalar color, int lineType, int shift, Point offset)
参数:
img 输入/输出图像
pts 包含多边形顶点坐标的 java.util.List 对象
color 填充多边形时使用的颜色
line_type边界类型。 参见 #LINE_*
offset填充多边形时的偏移量,是一个 Point 对象
      Mat mat = new Mat(500,500, CvType.CV_8UC3,new Scalar(255,255,255));MatOfPoint matOfPoint = new MatOfPoint();MatOfPoint matOfPoint1 = new MatOfPoint();matOfPoint.fromArray(new Point(100 ,100 ),new Point(400 ,100 ),new Point(400 ,400 ),new Point(100 ,400 ));matOfPoint1.fromArray(new Point(50 ,50 ),new Point(200 ,50 ),new Point(200 ,200 ),new Point(50 ,200 ));List pts = new ArrayList<>();pts.add(matOfPoint); pts.add(matOfPoint1);//填充多边形Imgproc.fillPoly(mat,pts,new Scalar(0,255,0),Imgproc.LINE_8,0);HighGui.imshow("fill",mat);HighGui.waitKey();mat.release();HighGui.destroyAllWindows();

结果:
在这里插入图片描述

六、标记绘制

1.字段

列举部分

MARKER_CROSS 十字形标记
MARKER_DIAMOND 菱形标记
MARKER_SQUARE 正方形标记
MARKER_STAR 五角星标记

2.方法介绍

​   在图像中预定义的位置绘制标记

drawMarker(Mat img, Point position, Scalar color, int markerType, int markerSize, int thickness, int line_type)
参数:
img 输入/输出图像
position 标记的位置
color 标记的颜色
markerType标记的类型,表示标记的形状。可以使用Imgproc类中定义的常量,如Imgproc.MARKER_CROSS等
markerSize标记轴的长度(标记的大小) [默认 = 20 像素]
thickness标记的线条粗细
line_type线条类型。
    // 创建一个空白图像Mat img = Mat.zeros(500, 500, 16); // 16表示CV_8UC3,即3通道的8位无符号整数图像// 定义标记的位置、颜色和其他参数Point position = new Point(250, 250); // 在图像中心Scalar color = new Scalar(0, 255, 0); // 绿色int markerType = Imgproc.MARKER_CROSS;int markerSize = 20;int thickness = 2;int lineType = Imgproc.LINE_8;// 在图像上绘制标记Imgproc.drawMarker(img, position, color, markerType, markerSize, thickness, lineType);// 显示图像HighGui.imshow("DrawMarkerExample", img);HighGui.waitKey(0);HighGui.destroyAllWindows();

结果:

七、文本绘制

  如果使用指定的字体无法渲染某些符号,它们将被替换为问号。

1.字段

列举部分。

FONT_HERSHEY_COMPLEX 使用复杂的 Hershey 字体风格。这是默认的字体样式,提供多种字符集和可读性
FONT_HERSHEY_PLAIN 使用简单的 Hershey 字体风格。字体比 FONT_HERSHEY_COMPLEX 更简单,但仍然具有多种字符集
FONT_HERSHEY_SCRIPT_COMPLEX 使用复杂的 Hershey 手写字体风格。这种字体模仿手写文字的外观
FONT_HERSHEY_SIMPLEX 使用Hershey简单字体风格。这种字体提供了一种清晰、简洁的外观,适合于在图像上绘制文本时要求较高的可读性和易读性的场景
FONT_HERSHEY_TRIPLEX 使用三重的 Hershey 字体风格,提供更多的字符集和可读性

2.方法介绍

1.绘制一个文本字符串

putText(Mat img, java.lang.String text, Point org, int fontFace, double fontScale, Scalar color, int thickness, int lineType, boolean bottomLeftOrigin)
参数:
img 输入/输出图像
text 要绘制的文本字符串
org 指定文本字符串的起始位置(左下角或右下角,取决于bottomLeftOrigin参数)
fontFace 指定字体类型。OpenCV提供了一些预定义的字体,如FONT_HERSHEY_SIMPLEX、FONT_HERSHEY_PLAIN等
fontScale 指定字体大小。它表示字体相对于原始大小的缩放因子
color 指定文本的颜色
thickness文本线条线条粗细
line_type线条类型。
bottomLeftOrigin boolean类型,指定文本字符串的起始位置是否从图像的左下角开始。如果为true,则文本从左下角开始绘制;如果为false,则从图像的右下角开始绘制
        // 创建一个空白图像Mat img = Mat.zeros(200, 400, CvType.CV_8UC3);//绘制文本Imgproc.putText(img,"hello OpenCV",new Point(100,100),Imgproc.FONT_HERSHEY_SIMPLEX,1,new Scalar(0,255,0),1,Imgproc.LINE_AA,false);// 显示图像HighGui.imshow("img", img);HighGui.waitKey(0);HighGui.destroyAllWindows();

结果:

在这里插入图片描述

八、相关扩展方法

1.线段裁定

clipLine用于检查线段是否完全位于给定的图像边界内,并进行裁剪。如果线段与图像边界相交或超出边界,它将被裁剪到边界内。函数返回一个布尔值,指示线段是否被裁剪。

clipLine(Rect imgRect, Point pt1, Point pt2)
参数:
img 输入/输出图像
pts 包含多边形顶点坐标的 java.util.List 对象
color 填充多边形时使用的颜色
line_type边界类型。 参见 #LINE_*
offset填充多边形时的偏移量,是一个 Point 对象
      // 创建一个图像矩形范围Rect imgRect = new Rect(0, 0, 100, 100);// 创建线段的起点和终点Point pt1 = new Point(50, 50);Point pt2 = new Point(60, 150);// 剪裁线段,使其位于图像矩形范围内boolean clipped = Imgproc.clipLine(imgRect, pt1, pt2);if (clipped) {System.out.println("线段被剪裁后的起点:" + pt1);System.out.println("线段被剪裁后的终点:" + pt2);} else {System.out.println("线段完全位于图像矩形范围之外");}

结果

线段被剪裁后的起点:{50.0, 50.0}
线段被剪裁后的终点:{55.0, 99.0}

2.椭圆弧转换为多段线

ellipse2Poly用于将椭圆弧转换为多段线 如果arcStart的值大于arcEnd,那么这两个值会被交换。

ellipse2Poly(Point center, Size axes, int angle, int arcStart, int arcEnd, int delta, MatOfPoint pts)
参数:
center 椭圆的中心点坐标 (Point 类型)
axes 椭圆的半长轴和半短轴的长度 (Size 类型).
angle 椭圆的旋转角度
arcStart 椭圆弧的起始角度
arcEnd 椭圆弧的结束角度
delta 角度增量,用于计算椭圆弧上的点。增加这个值会增加多段线的精度
pts 输出参数,包含生成的椭圆边界点的 MatOfPoint 对象.
      //创建空白图像Mat mat = new Mat(500,500, CvType.CV_8UC3,new Scalar(255,255,255));//椭圆中心点Point point = new Point(250,250);//轴长Size axes = new Size(200,150);//旋转角度int angle = 0;//起始角度int arcStart= 0;//结束角度int arcEnd = 360;//转换成线段MatOfPoint matOfPoint = new MatOfPoint();Imgproc.ellipse2Poly(point,axes,angle,arcStart,arcEnd,10,matOfPoint);System.out.println("matOfPoint.dump() = " + matOfPoint.dump());//绘制线段List pts = new ArrayList<>();pts.add(matOfPoint);Imgproc.polylines(mat,pts,true,new Scalar(255,0,0),2);Imgcodecs.imwrite(FileUtil.resPath + "imgproc/ellipse_2_poly.jpg",mat);

请自行验证结果

3.计算字体尺寸比例

getFontScaleFromHeight用于根据给定的像素高度计算字体尺寸比例。这对于绘制文本到图像上时非常有用,特别是当您需要确保文本的高度与给定的像素高度相匹配时。
请注意,此方法返回的是字体尺寸的比例因子,而不是具体的像素值或绝对大小。这意味着,如果您使用返回的比例因子与某个基础字体大小(例如 12)相乘,您将获得合适的字体大小以匹配给定的像素高度。

getFontScaleFromHeight(int fontFace, int pixelHeight, int thickness)
参数:
fontFace 字体类型
pixelHeight 目标像素高度.
thickness 文本的线条粗细

请自行验证结果

万水千山总是情,本栏完全公开免费。点赞+收藏30,瞬更下一篇
上一篇:Imgproc之色彩映射及颜色空间转换 下一篇: Imgproc之点集拟合

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

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

相关文章

基于Springboot的酒店管理系统

基于SpringbootVue的酒店管理系统的设计与实现 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringbootMybatis工具&#xff1a;IDEA、Maven、Navicat 系统展示 用户登录 网站首页 客房服务 客房信息 酒店公告 个人中心 后台登录 用户管理 客房类型管理…

微软搭建零售新媒体创意工作室大举抢占数字营销广告市场

“微软新零售创意工作室新平台利用生成式人工智能&#xff0c;在几秒钟内轻松定制横幅广告。零售媒体预计到2026年将成为一个价值1000亿美元的行业。” 零售媒体在过去几年中发展迅速。根据eMarketerOpens在新窗口的数据&#xff0c;预计到2024年&#xff0c;仅美国的零售媒体…

Python --- 怎么把Python当计算器用?(小白自学笔记)

怎么把Python当计算器用&#xff1f;(小白自学笔记) Part I&#xff1a;标准数学包的导入 今天刚刚装了python&#xff0c;打算用它来取代matlab的基本计算功能&#xff0c;当我的日常计算器用。(这里还有一个捷径&#xff0c;如果你跟我一样也是纯小白的话&#xff0c;直接问c…

并发 MiniHttp 服务器

项目需求 实现一个http 服务器项目&#xff0c;服务器启动后监听80端口的tcp 连接&#xff0c;当用户通过任意一款浏览器访问我们的http服务器&#xff0c;http服务器会查找用户访问的html页面是否存在&#xff0c;如果存在则通过http 协议响应客户端的请求&#xff0c;把页面…

SQLite数据库文件格式(十五)

返回&#xff1a;SQLite—系列文章目录 上一篇:SQLite 4.9的虚拟表机制(十四) 下一篇&#xff1a;SQLite超详细的编译时选项&#xff08;十六&#xff09; ► 目录 本文档描述和定义磁盘上的数据库文件 自 SQLite 以来所有版本使用的格式 版本 3.0.0 &#xff08;2004-06-18…

HCIP的学习(8)

OSPF数据报文 OSPF头部信息&#xff08;公共固定&#xff09; 版本&#xff1a;OSPF版本&#xff0c;在IPv4网络中版本字段恒定为数值2&#xff08;v1属于实验室版本&#xff0c;v3属于IPv6&#xff09;类型&#xff1a;代表具体是哪一种报文&#xff0c;按照1~5排序&#xff…

AIGC 探究:人工智能生成内容的技术原理、广泛应用、创新应用、版权问题与未来挑战

AIGC&#xff08;Artificial Intelligence Generated Content&#xff09;即人工智能生成内容&#xff0c;其核心在于利用深度学习技术&#xff0c;尤其是基于神经网络的模型&#xff0c;来模拟人类创作过程&#xff0c;自主生成高质量的文本、图像、音频、视频等各类内容。神经…

GDPU Java 天码行空7

实验目的&#xff1a; 熟悉awt组件和三种基本布局&#xff0c;掌握按钮、文本框、标签、等基本控件的使用和事件响应编程。 熟悉布局管理器 1. 窗体关闭事件 &#x1f496; WindowCloseEvent.java import java.awt.event.WindowAdapter; // 导入WindowAdapter类&#xff0c;…

江新安教授受邀金佰利进行《研发创新与创新思维》培训

近日&#xff0c;科济管线创始人江新安教授受邀金佰利为金佰利全国研发团队进行《研发创新与创新思维》培训授课。创新思维的两种思维形式——非逻辑思维和逻辑思维及其训练的主要方法。创新思维的培养&#xff0c;对于克服思维定势&#xff0c;提供创新方法&#xff0c;可以发…

FreGS:具有渐进频率正则化的3D高斯溅射

FreGS: 3D Gaussian Splatting with Progressive Frequency Regularization FreGS&#xff1a;具有渐进频率正则化的3D高斯溅射 Jiahui Zhang1  Fangneng Zhan2  Muyu Xu1  Shijian Lu1  Eric Xing3, 4 张家慧 1 詹方能 2 许慕玉 1 卢世坚 1 邢志伟 3, 4 1Nanyang Technolo…

19岁第一份“贺礼”,美创蝉联“2023年度数字化赋能服务商”

在即将到来的19岁&#xff0c;美创科技迎来第一份生日“贺礼”&#xff0c;再次蝉联“2023年度数字化赋能服务商”&#xff01; 4月13日&#xff0c;以“数聚浙里 智领未来”为主题&#xff0c;由浙江省首席信息官协会主办的数字化转型与升级论坛暨CIO年度峰会于杭州隆重召开。…

[MySQL]数据库原理8——喵喵期末不挂科

希望你开心&#xff0c;希望你健康&#xff0c;希望你幸福&#xff0c;希望你点赞&#xff01; 最后的最后&#xff0c;关注喵&#xff0c;关注喵&#xff0c;关注喵&#xff0c;大大会看到更多有趣的博客哦&#xff01;&#xff01;&#xff01; 喵喵喵&#xff0c;你对我真的…

数字化仪:为何成为示波器的理想替代品?——PCIe8910M

在现代科技领域&#xff0c;数字化仪逐渐成为示波器的理想替代品。数字化仪具备诸多特点&#xff0c;使其在多个应用场景下表现出色&#xff0c;逐渐取代传统的示波器。本期文章将探讨数字化仪相对于示波器的优势&#xff0c;以及其哪些特点使其成为示波器的理想替代品。 简介…

【Datawhale LLM学习笔记】一、什么是大型语言模型(LLM)

文章目录 1. 什么是大模型2. 检索增强生成 RAG一、什么是 RAG二、RAG 的工作流程 3. langChain介绍一、什么是 LangChain二、LangChain 的核心组件 4. 开发 LLM 应用的整体流程一、何为大模型开发二、大模型开发的一般流程三、搭建 LLM 项目的流程简析&#xff08;以知识库助手…

产品推荐 | 基于Lattice CrossLink-NX FPGA语音和视觉机器学习板

01 产品概述 Lattice Semiconductor CrossLink-NX语音和视觉机器学习板是高性能 – 专为低功耗机器学习应用而设计的电路板&#xff0c;采用CrossLink-NX 40K&#xff0c;这是一款具有AI加速器的强大FPGA。 基于视觉和语音的机器学习应用 – 板载低功耗图像传感器和麦克风以及…

Linux数据库自动备份 - 定时任务发到百度云盘、坚果云、邮箱附件

前言 1. 坚果云的webdav云盘最好&#xff01; &#xff08;免费账号每月1G上传流量&#xff09; 2. 不建议数据库备份文件发送到SMTP邮箱&#xff0c;因为对方服务器非常容易当做垃圾邮件处理&#xff0c;而且发信的SMTP账号会被封禁&#xff08;实测163发到QQ邮箱被封&…

更改docker镜像下载地址

一.简介 使用指令 sudo docker info 查看本机的docker镜像下载地址为 由于本机的var文件空间不足&#xff0c;因此&#xff0c;想更改他的存储地址&#xff0c;如下 二.开始操作 1.停止Docker服务&#xff1a; 执行命令 sudo systemctl stop docker 以及 sudo systemctl s…

220V转3.3V线性降压芯片WT5100

220V转3.3V线性降压芯片WT5100 WT5100就是那个离线式的稳压器芯片&#xff0c;没有电感的那种。里面内置了650V的大功率MOSFET&#xff0c;启动控制电路&#xff0c;电压控制电路&#xff0c;交流信号检测电路等等。通过切换SEL管脚&#xff0c;它就能输出5V或3.3V的电压。不需…

一本免费开源的电子书籍!这个 71.8k star 的项目,让你轻轻松松学会算法【文末有福利】

话说作为一名程序员&#xff0c;肯定都少不了在准备面试的时候刷 LeetCode 的算法题吧。虽然面试考察的算法题在工作中用到的非常少&#xff0c;但是确实是能让我们对常用的数据结构有更深刻的理解&#xff0c;以及对思维逻辑有很大的提升。不过枯燥的刷题可能让新手无从下手&a…

【Linux网络编程】UDP协议

UDP协议 1.再谈端口号端口号划分认识知名端口号(Well-Know Port Number)两个问题netstatpidof 2.UDP协议2.1UDP的特点2.2面向数据报2.3UDP的缓冲区2.4UDP使用注意事项2.5基于UDP的应用层协议 喜欢的点赞&#xff0c;收藏&#xff0c;关注一下把&#xff01; 1.再谈端口号 端口…