解决:如何在opencv中得到与matlab立体标定一样的矫正图?(python版opencv)

目的:采用一样的标定参数,matlab中和opencv中的立体矫正图像是一样的吗?不一样的话怎么让它们一样?
结论:不一样。后文为解决方案。
原因:注意matlab的标定结果在matlab中的用法和在opencv中的用法不一样,主要原因是matlab的rectifyStereoImages函数和opencv的cv2.stereoRectify函数的计算结果不一样导致的。照这个思路,把matlab的rectifyStereoImages的结果导入opencv、而不用opencv的cv2.stereoRectify就可以了。
不想看对比细节可直接看3. 好像发现了一些线索
软件版本:Matlab2024a + OpenCV4.9.0

问题的提出
在matlab的stereo camera calibrator中对棋盘格标定后,可以点击“Show Rectified”一键得到矫正图
在这里插入图片描述
但是把matlab的参数导入到opencv中后,怎么得到和matlab一样的结果呢?

1. 用标定后的参数在matlab中直接显示立体矫正后的左右目图像

在matlab的stereo camera calibrator中对棋盘格标定后,有两种结果,一种直接在stereoParams中查看,另一种用函数转换成opencv的格式,这里两种都展示:

1.1 在stereoParams中直接查看

% stereoParams.CameraParameters1.intrinsics中查看左相机
K =[5701.4907,0,1387.8609;0,5705.7330,1050.1707;0,0,1]
RadialDistortion = [-0.0621,0.2954,2.6695]
TangentialDistortion =[0.0010,-0.0004]
%写成[k1, k2, p1, p2, k3]格式
distCoeffs = [-0.0621,0.2954,0.0010,-0.0004,2.6695]
% stereoParams.CameraParameters2.intrinsics中查看右相机
K =[5596.4954,0,1062.2055;0,5620.0099,1016.7026;0,0,1]
RadialDistortion = [-0.0358,-0.0958,9.2830]
TangentialDistortion =[0.0001,0.0034]
%写成[k1, k2, p1, p2, k3]格式
distCoeffs = [-0.0358,-0.0958,0.0001,0.0034,9.2830]
% 以及旋转矩阵、平移矩阵(这两个是完全一样的)
stereoParams.PoseCamera2.R =[0.9500,-0.0045,0.3121;0.0035,1.0000,0.0038;-0.3121,-0.0025,0.9500]
stereoParams.PoseCamera2.Translation =[  -35.0696   -0.0101    5.1674] 

1.2 在matlab中转换成opencv格式

函数:stereoParametersToOpenCV

[intrinsicMatrix1,distortionCoefficients1,...intrinsicMatrix2,distortionCoefficients2,...rotationOfCamera2,translationOfCamera2] ...= stereoParametersToOpenCV(stereoParams)
% 输出
intrinsicMatrix1 =[5701.4907,0,1386.8609;0,5705.7330,1049.1707;0,0,1]
distortionCoefficients1 = [-0.0621    0.2954    0.0010   -0.0004    2.6695]
intrinsicMatrix2 =[5596.4954,0,1061.2055;0,5620.0099,1015.7026;0,0,1]
distortionCoefficients2 =[-0.0358   -0.0958   0.0001    0.0034   9.2830]
rotationOfCamera2 =[0.9500   -0.0045	0.31210.0035    1.0000	0.0038-0.3121   -0.0025	0.9500]
translationOfCamera2 =[  -35.0696   -0.0101    5.1674] 

1.3 两种方法的差异

只有内参矩阵的主点坐标不一样,畸变参数、旋转矩阵、平移向量都是一样的~
差值为1,原因是主点-1了,如下:cx = intrinsics.PrincipalPoint(1) - 1;

%在函数function [intrinsicMatrix, distortionCoefficients] = cameraIntrinsicsToOpenCV(intrinsics)中
function distortionCoefficients = getOCVDistortionCoefficients(intrinsics)    % Distortion Coefficients in OpenCV [k1 k2 p1 p2 k3]distortionCoefficients = zeros(1,5);if length(intrinsics.RadialDistortion) == 3distortionCoefficients([1,2,5]) = intrinsics.RadialDistortion;elsedistortionCoefficients([1,2]) = intrinsics.RadialDistortion;enddistortionCoefficients([3,4])   = intrinsics.TangentialDistortion;
endfunction intrinsicMatrix = getOCVIntrinsicMatrix(intrinsics)% Focal length.fx = intrinsics.FocalLength(1);fy = intrinsics.FocalLength(2);% Principal point.cx = intrinsics.PrincipalPoint(1) - 1;cy = intrinsics.PrincipalPoint(2) - 1;        % Construct OpenCV's intrinsic matrix.intrinsicMatrix = [fx   0  cx;0  fy  cy;0   0  1];
end

1.4 在matlab中用stereoParams映射矫正后的图像

close all;  clc;I1 = imread('D:\StereoRectify\Calibration\left\0001.jpg');%读取左右图片
I2 = imread('D:\StereoRectify\Calibration\right\0001.jpg');[J1, J2] = rectifyStereoImages(I1, I2, stereoParams);figure; subplot(2,1,1); imshow(J1);
subplot(2,1,2); imshow(J2);

这里J1,J2的图像尺寸都是4026×2128。
如果在opencv里面矫正后的图像尺寸也是这个值,说明两个方法取得一样的效果;反之,就有问题!
当然,这个验证方法过于简单粗暴,实际上把两种方法的图像做减法也能对比的~~
在这里插入图片描述

但是把matlab的参数导入到opencv中后,怎么得到和matlab一样的结果呢?

2. 把matlab标定的参数导入python的opencv,然后计算立体矫正后的左右目图像

这段可以不看~~怎么解释validPixROI这个参数呢?
在这里插入图片描述
网上有这么说的:

validPixROI1:一个最多地包含有效像素的长方形。(左目图像)
validPixROI2:一个最多地包含有效像素的长方形。(右目图像)

这个参数的第一个值是有效图像最左侧非零点的横坐标;
后面三个参数我无法解释,对着图像来看上/下/左/右/横/纵坐标都不是-_-|||。
opencv官方文档也没写,我自己写一个计算图像的非零区域的代码吧!

跳到这里:这里是正文~~

2.1 代码

import camera_config
import cv2
import matplotlib.pyplot as plt
from PIL import Image
import numpy as npsize = camera_config.size  # (8000, 3000) # 图像尺寸
left_camera_matrix = camera_config.left_camera_matrix
left_distortion = camera_config.left_distortion
right_camera_matrix = camera_config.right_camera_matrix
right_distortion = camera_config.right_distortion
R = camera_config.R
T = camera_config.T# 进行立体更正
R1, R2, P1, P2, Q, validPixROI1, validPixROI2 = cv2.stereoRectify(left_camera_matrix, left_distortion, right_camera_matrix, right_distortion, size, R, T)
# 输出参数:
print('***** R1 *****\n',R1)    # R1:矫正旋转矩阵。将第一个相机坐标系下未矫正的点变换到第一个相机矫正坐标系下,即 R_{左矫正坐标系}{左未矫正坐标系}
print('***** P1 *****\n',P1)    # P1:3x4左相机投影矩阵。将左矫正坐标系下的点投影到左矫正坐标系图像平面坐标系。
print('***** R2 *****\n',R2)    # R2:矫正旋转矩阵。将第二个相机坐标系下未矫正的点变换到第二个相机矫正坐标系下,即 R_{右矫正坐标系}{右未矫正坐标系}
print('***** P2 *****\n',P2)    # P2:3x4右相机投影矩阵。将左矫正坐标系下的点投影到右矫正坐标系图像平面坐标系。
print('***** Q *****\n',Q)      # Q:4x4的视差深度映射矩阵。
# 计算更正map
left_map1, left_map2 = cv2.initUndistortRectifyMap(left_camera_matrix, left_distortion, R1, P1, size, cv2.CV_16SC2)
right_map1, right_map2 = cv2.initUndistortRectifyMap(right_camera_matrix, right_distortion, R2, P2, size, cv2.CV_16SC2)
img_l = np.array(Image.open(r'Calibration/left/0001.jpg')) 
img_r = np.array(Image.open(r'Calibration/right/0001.jpg')) 
# 根据更正map对图片进行重构
img1_rectified = cv2.remap(img_l, left_map1, left_map2, cv2.INTER_LINEAR)
img2_rectified = cv2.remap(img_r, right_map1, right_map2, cv2.INTER_LINEAR)
# 转成灰度图,求非零图像区域,然后求图像区域的上/下/左/右/横/纵坐标
img1_rectified_gray = cv2.cvtColor(img1_rectified, cv2.COLOR_RGB2GRAY)
img2_rectified_gray = cv2.cvtColor(img2_rectified, cv2.COLOR_RGB2GRAY)
idxNonZero=cv2.findNonZero(img1_rectified_gray).squeeze(1)
l1, r1, t1, b1 = np.min(idxNonZero[:,0]), np.max(idxNonZero[:,0]), np.min(idxNonZero[:,1]), np.max(idxNonZero[:,1])
idxNonZero=cv2.findNonZero(img2_rectified_gray).squeeze(1)
l2, r2, t2, b2 = np.min(idxNonZero[:,0]), np.max(idxNonZero[:,0]), np.min(idxNonZero[:,1]), np.max(idxNonZero[:,1])
plt.figure(1)
plt.subplot(211)
plt.imshow(img1_rectified)
plt.subplot(212)
plt.imshow(img2_rectified)
plt.figure(2)
plt.subplot(211)
plt.imshow(img1_rectified[min(t1,t2):max(b1,b2), l2:r1])
plt.subplot(212)
plt.imshow(img2_rectified[min(t1,t2):max(b1,b2), l2:r1])
# 裁剪后的图像尺寸
print(f'image size: {r1-l2}x{max(b1,b2)-min(t1,t2)}')plt.show()

结果:

***** R1 *****[[ 0.9853897  -0.00381456  0.1702721 ][ 0.00352377  0.99999177  0.00200993][-0.17027837 -0.00138056  0.98539503]]
***** P1 *****[[5662.8715        0.         4312.4698143     0.        ][   0.         5662.8715     1261.70807171    0.        ][   0.            0.            1.            0.        ]]
***** R2 *****[[ 0.98931806  0.00028444 -0.14577278][-0.00053314  0.99999847 -0.00166697][ 0.14577209  0.00172688  0.98931669]]
***** P2 *****[[   5662.8715           0.            4312.4698143  -200738.92039502][      0.            5662.8715        1261.70807171       0.        ][      0.               0.               1.               0.        ]]
***** Q *****[[    1.             0.             0.         -4312.4698143 ][    0.             1.             0.         -1261.70807171][    0.             0.             0.          5662.8715    ][    0.             0.             0.02821013    -0.        ]]
image size: 4074x2152

2.2 参数解释

参见opencv官方文档中函数stereoRectify()的解释

P1, P2的含义及其用法

P1:3x4左相机投影矩阵。将左矫正坐标系下的三维点投影到左矫正坐标系图像平面坐标系的像素点
P 1 = [ f 0 c x 1 0 0 f c y 0 0 0 1 0 ] {P1 = }\left[ {\begin{array}{cc} f&0&{{c_{x1}}}&0\\ 0&f&{{c_y}}&0\\ 0&0&1&0 \end{array}} \right] P1= f000f0cx1cy1000

P2:3x4右相机投影矩阵。将左矫正坐标系下的三维点投影到右矫正坐标系图像平面坐标系的像素点。 T x T_x Tx是两个相机之间的水平偏移值。我这里算了一下,实际上就是matlab标定的平移向量[ -35.0696 -0.0101 5.1674] 的长度=35.4483的负数,用P2的两个参数 T x ⋅ f {T_x} \cdot f Txf=-200738.92039502; f f f=5662.8715; -200738.92039502/5662.8715 = -35.4483 可以验证。
P 2 = [ f 0 c x 2 T x ⋅ f 0 f c y 0 0 0 1 0 ] {P2 = }\left[ {\begin{array}{cc} f&0&{{c_{x2}}}&{{T_x} \cdot f}\\ 0&f&{{c_y}}&0\\ 0&0&1&0 \end{array}} \right] P2= f000f0cx2cy1Txf00

对于三维物理空间点 ( X , Y , Z ) (X, Y, Z) (X,Y,Z),都可用P1和P2,计算该点对应的图像像素坐标 ( x , y ) (x, y) (x,y),( w w w是尺度因子)
w [ x y 1 ] = P [ X Y Z 1 ] w\left[ {\begin{array}{cc} x\\ y\\ 1 \end{array}} \right] = P\left[ {\begin{array}{cc} X\\ Y\\ Z\\ 1 \end{array}} \right] w xy1 =P XYZ1

Q的含义及其用法

Q:4x4的视差深度映射矩阵。
Q = [ 1 0 0 − c x 1 0 1 0 − c y 0 0 0 f 0 0 − 1 T x c x 1 − c x 2 T x ] {Q = }\left[ {\begin{array}{cc} 1&0&0&{ - {c_{x1}}}\\ 0&1&0&{ - c{}_y}\\ 0&0&0&f\\ 0&0&{ - \frac{1}{{{T_x}}}}&{\frac{{{c_{x1}} - {c_{x2}}}}{{{T_x}}}} \end{array}} \right] Q= 10000100000Tx1cx1cyfTxcx1cx2
为什么把Q叫视差深度映射矩阵呢?因为采用下式,Q能够将单通道视差图转换为表示 3D 表面的 3 通道图(就是x,y,z坐标值)。对于每个像素坐标 ( x , y ) (x, y) (x,y)及其视差 d = d i s p a r i t y ( x , y ) d=disparity(x,y) d=disparity(x,y) ,都能计算三维物理空间中的一个点 ( X , Y , Z ) (X, Y, Z) (X,Y,Z)
[ X Y Z W ] = Q [ x y d i s p a r i t y ( x , y ) 1 ] \left[ {\begin{array}{c} X\\ Y\\ Z\\ W \end{array}} \right] = Q\left[ {\begin{array}{c} x\\ y\\ disparity(x,y)\\ 1 \end{array}} \right] XYZW =Q xydisparity(x,y)1
上式中的W好像没有什么实际意义。。。

2.3 图像结果

Figure1是8000×3000尺寸的图像
在这里插入图片描述
Figure2是裁掉周围黑框的图像
在这里插入图片描述

  • opencv的image size: 4074x2152为什么和matlab的图像尺寸4026×2128不一样啊?!

我裂开!!!

哪位小伙伴知道为什么?欢迎讨论!!!
直观的对比opencv和matlab的结果
在这里插入图片描述

3. 好像发现了一些线索 ~_~

matlab自带的rectifyStereoImages(I1, I2, stereoParams)的可选输出重投影矩阵reprojectionMatrix,和opencv的Q矩阵是同样的含义,但是,结果却不一样!!!

[J1, J2, reprojectionMatrix, camMatrix1, camMatrix2, R1, R2] = rectifyStereoImages(I1, I2, stereoParams);
reprojectionMatrix = [1	0	0	-1943.86090	1	0	-1066.43670	0	0	5596.49540	0	0.0282	0]
%   Notes
%   -----
%   - reprojectionMatrix is represented as a 4-by-4 matrix:
%       [1    0   0     -cx
%        0    1   0     -cy
%        0    0   0     f
%        0    0   1/b   0],
%     where f and [cx, cy] are the focal length and principal point of
%     rectified camera 1, respectively. b is the baseline of the virtual 
%     rectified stereo camera.
camMatrix1 =[5596.4954	0	1943.8609	-198385.9933;0	5596.4954	1066.4367	0;0	0	1	0]
camMatrix2 =[1	0	0	0;0	1	0	0;0	0	1	0]
% R1、R2和前面的一样
R1 =[0.9854	-0.0038	0.17030.0035	1.0000	0.0020-0.1703	-0.0014	0.9854]
R2 =[0.9893	0.0003	-0.1458-0.0005	1.0000	-0.00170.1458	0.0017	0.9893]
%   - Use camMatrix1 and camMatrix2 to project 3-D world points in the 
%     rectified camera 1's coordinate system into the image plane of J1 and 
%     J2, respectively. R1 and R2 bring 3-D points in the unrectified camera's 
%     coordinate system to points in the rectified camera's coordinate system 
%     for camera 1 and camera 2, respectively. 

在python中对前面的2.1 代码作出如下修改就可以了:

# 原来的
# 进行立体更正
R1, R2, P1, P2, Q, validPixROI1, validPixROI2 = cv2.stereoRectify(left_camera_matrix, left_distortion, right_camera_matrix, right_distortion,size, R, T)# 把上面这句删除,改成matlab的rectifyStereoImages输出值
Q = reprojectionMatrix
P1 = camMatrix1
P2 = camMatrix2
R1 = R1
R2 = R2

这样opencv输出的image size: 4025x2111,和matlab的图像尺寸4026×2128相当接近了!!!直观对比如下 ↓↓
在这里插入图片描述

但是,左图是可以的,右图是黑色的,怎么办啊??!!

尝试:按照前面P2的定义,对P2重新赋值

P2 = P1
P2[0,3] = np.linalg.norm(T)*P1[0,0]
# 输出P2
***** P2 *****[[  5596.495           0.           1943.861      198385.9892][     0.           5596.495        1066.437           0.        ][     0.              0.              1.              0.        ]]image size: 4025x2127

OK啦!!!opencv输出的image size: 4025x2127和matlab的图像尺寸4026×2128横纵坐标都差个1,让我看看应该把1加在哪!
直观对比如下 ↓↓
在这里插入图片描述
两张图像做减法,不太行,可能是插值方法不一样?还是坐标错了?
在这里插入图片描述
还是提取棋盘格角点坐标对比吧!

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

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

相关文章

光伏电站折旧率的计算

折旧率的计算方法 直线法:直线法是最常用的折旧计算方法。它假设光伏设备在使用寿命内每年的折旧额保持不变。计算公式为: 折旧率(资产原值-净残值)预计使用寿命。 其中,资产原值是指光伏设备购置价值或建成投产时的价值;净残值…

chrome清除https状态

莫名其妙的http跳转到https的url了。 解决办法 浏览器地址栏输入:chrome://net-internals/#hsts 输入你需要删除的域名即可!!!

AMD平台,5600X+6650XT,虚拟机安装macOS 15 Sequoia 15.0.1 (2024.10)

macOS 15 Sequoia终于出正式版了,没有Mac,所以还是虚拟机玩玩,还是属于折腾,安装过程和之前差不多,这次我从外网获得了8核和16核openCore,分享一下。 提前发一下ISO镜像地址和openCore引导磁盘地址 ISO镜…

《人工智能往事》—— 简而言之,AI 已经包围了我们。AI 就是我们。

《人工智能往事》这本书我挺喜欢的(推荐给对计算机和AI史有考古兴趣的同学们)。我是几年前读的英文版《This Could Be Important: My Life and Times with the Artificial Intelligentsia Pamela McCorduck》很高兴发现国内推出了译本。 作者帕梅拉麦考…

一座数智工厂,看见汽车制造的诗与远方

今天的中国,已经是名副其实的汽车制造与出口大国。 根据国家统计局10月18日发布的数据,今年9月中国新能源汽车产量同比增长48.5%,增速为2023年5月以来新高。1月至9月汽车行业出口交货值同比增长17.1%。中国汽车产业的高速发展,离不…

学习docker第三弹------Docker镜像以及推送拉取镜像到阿里云公有仓库和私有仓库

docker目录 1 Docker镜像dockers镜像的进一步理解 2 Docker镜像commit操作实例案例内容是ubuntu安装vim 3 将本地镜像推送至阿里云4 将阿里云镜像下载到本地仓库5 后记 1 Docker镜像 镜像,是docker的三件套之一(镜像、容器、仓库)&#xff0…

uniapp微信小程序使用vant组件库

1. vant组件库(微信小程序版本)官网地址 地址: vant组件库(微信小程序版本) 2. uniapp微信小程序引入 <1>. 去到GitHub中将资源克隆到本地,地址: vant-weapp <2>. 到本地把文件拷贝到我们的uniapp微信小程序项目中 在项目的目录下新建一个文件wxcomponents&#…

iOS 18.2开发者预览版 Beta 1版本发布,欧盟允许卸载应用商店

苹果今天为开发人员推送了iOS 18.2开发者预览版 Beta 1版本 更新&#xff08;内部版本号&#xff1a;22C5109p&#xff09;&#xff0c;本次更新距离上次发布 Beta / RC 间隔 2 天。该版本仅适用于支持Apple Intelligence的设备&#xff0c;包括iPhone 15 Pro系列和iPhone 16系…

Spring Web MVC 入门

1. 什么是 Spring Web MVC Spring Web MVC 是基于 Servlet API 构建的原始 Web 框架&#xff0c;从从⼀开始就包含在Spring框架中。它的 正式名称“SpringWebMVC”来⾃其源模块的名称(Spring-webmvc)&#xff0c;但它通常被称为"Spring MVC". 什么是Servlet呢? Ser…

开拓鸿蒙测试新境界,龙测科技引领自动化测试未来

在当今科技舞台上&#xff0c;鸿蒙 OS 以非凡先进性强势登场&#xff0c;打破传统操作系统格局&#xff0c;为软件测试领域带来全新机遇与艰巨挑战。 一、鸿蒙 OS 的辉煌崛起 &#xff08;一&#xff09;壮丽发展历程与卓越市场地位 鸿蒙 OS 的发展如波澜壮阔的史诗。2023 年…

高翔【自动驾驶与机器人中的SLAM技术】学习笔记(十二)拓展图优化库g2o(一)框架

【转载】理解图优化&#xff0c;一步步带你看懂g2o框架 文章来源&#xff1a;理解图优化&#xff0c;一步步带你看懂g2o框架 小白&#xff1a;师兄师兄&#xff0c;最近我在看SLAM的优化算法&#xff0c;有种方法叫“图优化”&#xff0c;以前学习算法的时候还有一个优化方法…

Python量化交易(二):金融市场的基础概念

引言 大家好&#xff0c;我是GISer Liu&#x1f601;&#xff0c;一名热爱AI技术的GIS开发者。本系列文章是我跟随DataWhale 2024年10月学习赛的Python量化交易学习总结文档&#xff1b;在现代社会中&#xff0c;投资已成为个人、机构和政府追求财富增长和资源配置的重要方式。…

sql-labs靶场第二十一关测试报告

目录 一、测试环境 1、系统环境 2、使用工具/软件 二、测试目的 三、操作过程 1、寻找注入点 2、注入数据库 ①寻找注入方法 ②爆库&#xff0c;查看数据库名称 ③爆表&#xff0c;查看security库的所有表 ④爆列&#xff0c;查看users表的所有列 ⑤成功获取用户名…

软件设计师:软件工程

文章目录 一、开发模型&#xff08;1&#xff09;瀑布模型&#xff08;需求明确&#xff09;&#xff08;2&#xff09;增量模型&#xff08;快速构建&#xff09;&#xff08;3&#xff09;演化模型&#xff08;迭代模型&#xff09;&#xff08;3.1&#xff09;原型模型&…

基于KV260的基础视频链路通路(MIPI+Demosaic+VDMA)

目录 1. 简介 1.1 要点 1.2 背景 1.2.1 Got stuck 1.2.2 Cant be Initialized 2. Overlay 2.1 参考 Overlay 2.1.1 KV260 Base 2.1.2 Pynq-CV-OV5640 2.2 自建 Overlay 2.2.1 IIC IP 2.2.2 MIPI CSI-2 Rx 2.2.3 AXI4-S Subset 2.2.4 Demosaic 2.2.5 Pixel Pack …

Pandas模块之垂直或水平交错条形图

目录 df.plot() 函数Pandas模块之垂直条形图Pandas模块之水平交错条形图 df.plot() 函数 df.plot() 是 Pandas 中的一个函数&#xff0c;用于绘制数据框中的数据。它是基于 Matplotlib 库构建的&#xff0c;可以轻松地创建各种类型的图表&#xff0c;包括折线图、柱状图、散点…

html----图片按钮,商品展示

源码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>图标</title><style>.box{width:…

中国建设银行广东省分行珠海市分行营业网点装修工程采购项目市场调研供应商征集公告

中国建设银行广东省分行珠海市分行营业网点装修工程采购项目市场调研 供应商征集公告 根据业务发展需要&#xff0c;中国建设银行广东省分行现对珠海市分行2025-2026年度网点装修工程采购项目进行供应商市场调研&#xff0c;有关事宜公告如下&#xff1a;

【案例演示】图像描述大模型示例及概念解释

【案例演示】图像描述大模型示例及概念解释 一、案例演示模型描述期望模型使用方式以及适用范围模型功能演示 二、大模型开源平台概览模型库的定义大模型开源平台 一、案例演示 模型链接&#xff1a;https://modelscope.cn/models/iic/mplug_image-captioning_coco_base_zh 模…

XML\XXE漏洞基本原理

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 本文整理XXE漏洞的相应信息 XML与XXE漏洞 这个东西有许多叫法&#xff0c;XML漏洞与XXE漏洞差不多都是一个东西。 这个漏洞是出现在XMl上的&#xff0c;然后可以叫他XXE注入漏洞。 XML简介 XML是一种数据的传输…