




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上計算機(jī)視覺攝像機(jī)標(biāo)定實驗報告實驗名稱 基于OpenCV的攝像機(jī)標(biāo)定實驗項目 1、 學(xué)會使用OpenCV2、利用OpenCV進(jìn)行攝像機(jī)標(biāo)定,編程實現(xiàn),給出實驗結(jié)果及其分析。實驗儀器設(shè)備電腦+Visual Studio 2010+openCV.2.4.8。實驗原理1、 理論知識如圖,(u、v)表示以像素為單位的圖像坐標(biāo)系的坐標(biāo),(X、Y)表示以mm為單位的圖像坐標(biāo)系的坐標(biāo),在X、Y坐標(biāo)系中,原點O1定義在攝像機(jī)光軸與圖像平面的交點,該點一般位于圖像中心,但是由于制造原因,很多情況下會有偏移,若O1在U、V坐標(biāo)系中坐標(biāo)為(u0,v0),每一個像素在X軸與Y軸方向上的無力尺寸
2、為dx、dy,則圖像任意一個像素在兩個坐標(biāo)系下的坐標(biāo)有如下關(guān)系: 如圖,Oc點為攝像機(jī)光心,Xc軸和Yc軸與圖像的X軸與Y軸平行,Zc軸為攝像機(jī)光軸,它與圖像平面垂直。光軸與圖像平面的交點,極為圖像坐標(biāo)系的原點,由點Oc與Xc、Yc、Zc軸組成的直角坐標(biāo)系稱為攝像機(jī)坐標(biāo)系,OOc為攝像機(jī)焦距:由于攝像機(jī)可以安放在環(huán)境中任意位置,所以在環(huán)境中選擇一個基準(zhǔn)坐標(biāo)系來描述攝像機(jī)位置,并用它描述環(huán)境中任何物體的位置,該坐標(biāo)系為世界坐標(biāo)系。它有Xw、Yw和Zw軸組成,攝像機(jī)坐標(biāo)系與世界坐標(biāo)系之間的關(guān)系可以用旋轉(zhuǎn)矩陣與平移向量t來描述。 總體來說,世界坐標(biāo)系到圖像坐標(biāo)系的關(guān)系可總結(jié)如下:
3、; 攝像頭成像幾何關(guān)系,其中Oc 點稱為攝像頭(透鏡)的光心,Xc 軸和Yc 軸與圖像的x軸和Y軸平行,Zc 軸為攝像頭的光軸,它與圖像平面垂直。光軸與圖像平面的交點O1 ,即為圖像坐標(biāo)系的原點。由點Oc 與Xc 、Yc 、Zc 軸組成的坐標(biāo)系稱為攝像頭坐標(biāo)系,Oc O1 的距離為攝像頭焦距,用f表示。 又稱為線性攝像機(jī)模型,任何空間點M在圖像中的投影位置m,為光心Oc與M的連線OcM與圖像平面的交點。此時有比例關(guān)系如下: 將上面的世界坐標(biāo)到攝像機(jī)坐標(biāo)的轉(zhuǎn)換代入,最后皆可以得到世界坐標(biāo)系與攝像機(jī)坐標(biāo)系之間的關(guān)系:alph=f/dx, beta=f/dy,分別代表了以X軸與Y
4、軸方向上的像素為單位表示的等效焦距。gamma在較高精度的相機(jī)模型中引入,表示圖像平面中以像素為單位的坐標(biāo)軸傾斜程度的量度,gamma=alpha*tan(theta) theta是相機(jī)CCD陣列v軸的偏斜角度。由針孔模型我們可以知道,如果一直攝像機(jī)的內(nèi)外參數(shù),就知道投影矩陣M,這時候?qū)θ魏慰臻g點就可以求出其對應(yīng)圖像坐標(biāo),但是如果已知空間某點的像點m位置(u,v)即使已經(jīng)知道攝像機(jī)內(nèi)外參數(shù),Xw也不能唯一確定,因為在投影過程中消去了Zc的信息。 在上面的式子中M是3x4不可逆矩陣,當(dāng)已知M與(u,v)時,由公式得到的三個方程中消去z,只可以得關(guān)于Xw,Yw與Zw的兩個線性方程,這個方
5、程組即為射線OP的方程,也就是說,投影點為m的所有點均在該射線上,所以,該空間是不能唯一確定的。攝像頭由于光學(xué)透鏡的特性使得成像存在著徑向畸變,可由三個參數(shù)k1,k2,k3確定;由于裝配方面的誤差,傳感器與光學(xué)鏡頭之間并非完全平行,因此成像存在切向畸變,可由兩個參數(shù)p1,p2確定。單個攝像頭的定標(biāo)主要是計算出攝像頭的內(nèi)參(焦距f和成像原點cx,cy、五個畸變參數(shù)(一般只需要計算出k1,k2,p1,p2,對于魚眼鏡頭等徑向畸變特別大的才需要計算k3)以及外參(標(biāo)定物的世界坐標(biāo))。 OpenCV 中使用的求解焦距和成像原點的算法是基于張正友的方法,而求解畸變參數(shù)是基于 Brown 的方法
6、; 設(shè)(u、v)為理想的圖像像素坐標(biāo),相對應(yīng)的, 為真實獲得的像素坐標(biāo)。則(x,y)就為理想的圖像物理坐標(biāo), 為實際獲得的圖像物理坐標(biāo),可以得到如下的關(guān)系式:我們知道,(u0,v0)在求攝像機(jī)內(nèi)參的時候可以知道, 在圓心提取排序后也可以知道,(u,v)可以通過OpenCV中cvProjectpoints函數(shù)求得反投影殘差。(x,y)可以通過 和 求出,于是克得到如下公式:設(shè)Dk=d,所以可以求出畸變系數(shù)k1,k2.在求得了徑向畸變的系數(shù)以后,就可以如下得到成像儀某點理想的徑向位置其中,r就是當(dāng)前點的所在透鏡半徑,k3只有在精度很高的時候才用得到 切向畸變主要包括離心畸變和薄
7、棱鏡畸變,其中,離心畸變是由攝像機(jī)的鏡頭中各個透鏡的光軸不能完全重合造成的。離心畸變其數(shù)學(xué)模型可以表示為:薄棱鏡畸變是由鏡頭設(shè)計和制造缺陷等誤差造成(比如鏡頭與攝像機(jī)像面之間有很小的傾角,其不僅會引起徑向偏差,而且會引起切向誤差)其數(shù)學(xué)模型為:綜合考慮徑向畸變和切向畸變,就需要對小孔成像模型進(jìn)行修正,理想的圖像點歸一化坐標(biāo)為p=(x,y)T,有畸變的圖像點的歸一化坐標(biāo)為Pd=(xd,yd)T之間關(guān)系為: 2、 用到的OPENCV函數(shù)FindChessboardCorners 尋找棋盤圖的內(nèi)角點位置 int cvFindChessboardCorners( const vo
8、id*image, CvSize pattern_size,CvPoint2D32f* corners,int* corner_count=NULL,int flags=CV_CALIB_CB_ADAPTIVE_THRESH ); image 輸入的棋盤圖,必須是8位的灰度或者彩色圖像。 pattern_size 棋盤圖中每行和每列角點的個數(shù)。 corners 檢測到的角點 corner_count 輸出,角點的個數(shù)。如果不是NULL,函數(shù)將檢測到的角點的個數(shù)存儲于此變量。 flags 各種操作標(biāo)志,可以是0或者下面值的組合: CV_CALIB_CB_ADAPTIVE_THRESH
9、- 使用自適應(yīng)閾值(通過平均圖像亮度計算得到)將圖像轉(zhuǎn)換為黑白圖,而不是一個固定的閾值。 CV_CALIB_CB_NORMALIZE_IMAGE - 在利用固定閾值或者自適應(yīng)的閾值進(jìn)行二值化之前,先使用cvNormalizeHist來均衡化圖像亮度。 CV_CALIB_CB_FILTER_QUADS - 使用其他的準(zhǔn)則(如輪廓面積,周長,方形形狀)來去除在輪廓檢測階段檢測到的錯誤方塊。 函數(shù)cvFindChessboardCorners試圖確定輸入圖像是否是棋盤模式,并確定角點的位置。如果所有角點都被檢測到切它們都被以一定順序排布(一行一行地,每行從左到右),函數(shù)返回非零值,否則在函數(shù)不能發(fā)現(xiàn)
10、所有角點或者記錄它們地情況下,函數(shù)返回0。例如一個正常地棋盤圖右8x8個方塊和7x7個內(nèi)角點,內(nèi)角點是黑色方塊相互聯(lián)通地位置。這個函數(shù)檢測到地坐標(biāo)只是一個大約地值,如果要精確地確定它們的位置,可以使用函數(shù)cvFindCornerSubPix。 FindCornerSubPix 尋找棋盤圖的內(nèi)角點位置精確角點位置 void cvFindCornerSubPix( const CvArr* image, CvPoint2D32f* corners,
11、0; int count, CvSize win, CvSize zero_zone, CvTermCriteria criteria );image 輸入圖像. corners 輸
12、入角點的初始坐標(biāo),也存儲精確的輸出坐標(biāo) count 角點數(shù)目 win 搜索窗口的一半尺寸。如果win=(5,5) 那么使用 5*2+1 × 5*2+1 = 11 × 11 大小的搜索窗口 zero_zone 死區(qū)的一半尺寸,死區(qū)為不對搜索區(qū)的中央位置做求和運(yùn)算的區(qū)域。它是用來避免自相關(guān)矩陣出現(xiàn)的某些可能的奇異性。當(dāng)值為 (-1,-1) 表示沒有死區(qū)。 criteria 求角點的迭代過程的終止條件。即角點位置的確定,要么迭代數(shù)大于某個設(shè)定值,或者是精確度達(dá)到某個設(shè)定值。 criteria 可以是最大迭代數(shù)目,或者是設(shè)定的精確度,也可以是它們的組合。 函數(shù)cvFindCorne
13、rSubPix通過迭代來發(fā)現(xiàn)具有子象素精度的角點位置,或如圖所示的放射鞍點(radial saddle points)。 子象素級角點定位的實現(xiàn)是基于對向量正交性的觀測而實現(xiàn)的,即從中央點q到其鄰域點p 的向量和p點處的圖像梯度正交(服從圖像和測量噪聲)??紤]以下的表達(dá)式: i=DIpiT·(q-pi)其中,DIpi表示在q的一個鄰域點pi處的圖像梯度,q的值通過最小化i得到。通過將i設(shè)為0,可以建立系統(tǒng)方程如下: sumi(DIpi·DIpiT)·q - sumi(DIpi·DIpiT·pi) = 0其中q的鄰域(搜索窗)中的梯度被累加。調(diào)用
14、第一個梯度參數(shù)G和第二個梯度參數(shù)b,得到: q=G-1·b該算法將搜索窗的中心設(shè)為新的中心q,然后迭代,直到找到低于某個閾值點的中心位置。 DrawChessBoardCorners 繪制檢測到的棋盤角點 void cvDrawChessboardCorners( CvArr* image,CvSize pattern_size,CvPoint2D32f*corners,int count,int pattern_was_found ); image 結(jié)果圖像,必須是8位彩色圖像。 pattern_size 每行和每列地內(nèi)角點數(shù)目。 corners 檢測到地角點數(shù)
15、組。 count 角點數(shù)目。 pattern_was_found 指示完整地棋盤被發(fā)現(xiàn)(0)還是沒有發(fā)現(xiàn)(=0)??梢詡鬏攃vFindChessboardCorners函數(shù)的返回值。 當(dāng)棋盤沒有完全檢測出時,函數(shù)cvDrawChessboardCorners以紅色圓圈繪制檢測到的棋盤角點;如果整個棋盤都檢測到,則用直線連接所有的角點。 CalibrateCamera2利用定標(biāo)來計算攝像機(jī)的內(nèi)參數(shù)和外參數(shù)void cvCalibrateCamera2 ( const CvMat* object_points,
16、160; constCvMat* image_points,const CvMat* point_counts, CvSizeimage_size, CvMat* intrinsic_matrix,
17、160; CvMat*distortion_coeffs, CvMat* rotation_vectors=NULL, CvMat*translation_vectors=NULL, int flags=0 ); object_points 定標(biāo)點的世界坐標(biāo),為3xN或者Nx3的矩陣,這里N是所有視圖中點的總數(shù)。 image_points 定標(biāo)點的圖像坐標(biāo),為2xN或者Nx2的矩陣,這里N是所有視圖中點的總數(shù)。 poi
18、nt_counts 向量,指定不同視圖里點的數(shù)目,1xM或者M(jìn)x1向量,M是視圖數(shù)目。 image_size 圖像大小,只用在初始化內(nèi)參數(shù)時。intrinsic_matrix 輸出內(nèi)參矩陣(A) ,如果指定CV_CALIB_USE_INTRINSIC_GUESS和(或)CV_CALIB_FIX_ASPECT_RATION,fx、 fy、 cx和cy部分或者全部必須被初始化。 distortion_coeffs 輸出大小為4x1或者1x4的向量,里面為形變參數(shù)k1, k2, p1, p2。 rotation_vectors 輸出大小為3xM或者M(jìn)x3的矩陣,里面為旋轉(zhuǎn)向量(旋轉(zhuǎn)矩陣的緊湊表示方式
19、,具體參考函數(shù)cvRodrigues2) translation_vectors 輸出大小為3xM或Mx3的矩陣,里面為平移向量。 flags 不同的標(biāo)志,可以是0,或者下面值的組合: · CV_CALIB_USE_INTRINSIC_GUESS- 內(nèi)參數(shù)矩陣包含fx,fy,cx和cy的初始值。否則,(cx,cy)被初始化到圖像中心(這兒用到圖像大?。咕嘤米钚∑椒讲罘绞接嬎愕玫?。注意,如果內(nèi)部參數(shù)已知,沒有必要使用這個函數(shù),使用cvFindExtrinsicCameraParams2則可。 · CV_CALIB_FIX_PRI
20、NCIPAL_POINT- 主點在全局優(yōu)化過程中不變,一直在中心位置或者在其他指定的位置(當(dāng)CV_CALIB_USE_INTRINSIC_GUESS設(shè)置的時候)。 · CV_CALIB_FIX_ASPECT_RATIO- 優(yōu)化過程中認(rèn)為fx和fy中只有一個獨(dú)立變量,保持比例fx/fy不變,fx/fy的值跟內(nèi)參數(shù)矩陣初始化時的值一樣。在這種情況下, (fx, fy)的實際初始值或者從輸入內(nèi)存矩陣中讀?。ó?dāng)CV_CALIB_USE_INTRINSIC_GUESS被指定時),或者采用估計值(后者情況中fx和fy可能被設(shè)置為任意值,只有比值被使用)。 ·
21、60; CV_CALIB_ZERO_TANGENT_DIST 切向形變參數(shù)(p1, p2)被設(shè)置為0,其值在優(yōu)化過程中保持為0。 函數(shù)cvCalibrateCamera2從每個視圖中估計相機(jī)的內(nèi)參數(shù)和外參數(shù)。3維物體上的點和它們對應(yīng)的在每個視圖的2維投影必須被指定。這些可以通過使用一個已知幾何形狀切具有容易檢測的特征點的物體來實現(xiàn)。這樣的一個物體被稱作定標(biāo)設(shè)備或者定標(biāo)模式,OpenCV有內(nèi)建的把棋盤當(dāng)作定標(biāo)設(shè)備方法(參考cvFindChessboardCorners)。目前,傳入初始化的內(nèi)參數(shù)(當(dāng)CV_CALIB_USE_INTRINSIC_GUESS被設(shè)置時)只支持平面定標(biāo)設(shè)備(物
22、體點的Z坐標(biāo)必須時全0或者全1)。不過3維定標(biāo)設(shè)備依然可以用在提供初始內(nèi)參數(shù)矩陣情況。在內(nèi)參數(shù)和外參數(shù)矩陣的初始值都計算出之后,它們會被優(yōu)化用來減小反投影誤差(圖像上的實際坐標(biāo)跟cvProjectPoints2計算出的圖像坐標(biāo)的差的平方和)。 實驗內(nèi)容實驗代碼如下:#include <string>#include <iostream>#include <cv.h>#include <highgui.h>using namespace std;int main()int cube_length=5;IplImage* frame = NULL;i
23、nt number_image=12;char *str1;str1=".jpg"char filename20=""IplImage * show; int a=1;int number_image_copy = number_image;CvSize board_size=cvSize(5,7);int board_width=board_size.width;int board_height=board_size.height;int total_per_image=board_width*board_height;CvPoint2D32f * i
24、mage_points_buf = new CvPoint2D32ftotal_per_image;CvMat * image_points=cvCreateMat(number_image*total_per_image,2,CV_32FC1);CvMat * object_points=cvCreateMat(number_image*total_per_image,3,CV_32FC1);CvMat * point_counts=cvCreateMat(number_image,1,CV_32SC1);CvMat * intrinsic_matrix=cvCreateMat(3,3,CV
25、_32FC1);CvMat * distortion_coeffs=cvCreateMat(5,1,CV_32FC1);int count;int found;int step;int successes=0;while(a<=number_image_copy)sprintf_s (filename,"%d.jpg",a);show=cvLoadImage(filename,-1);cvNamedWindow("SrcPicture",1);cvShowImage("SrcPicture",show);found=cvFind
26、ChessboardCorners(show,board_size,image_points_buf,&count,CV_CALIB_CB_ADAPTIVE_THRESH|CV_CALIB_CB_FILTER_QUADS);if(found=0)cout<<"第"<<a<<"幀圖片無法找到棋盤格所有角點!nn"cvNamedWindow("FindCornerPoints",1);cvShowImage("FindCornerPoints",show);cvWaitKey
27、(0);elsecout<<"第"<<a<<"幀圖像成功獲得"<<count<<"個角點.n"cvNamedWindow("FindCornerPoints",1);IplImage * gray_image= cvCreateImage(cvGetSize(show),8,1);cvCvtColor(show,gray_image,CV_BGR2GRAY);cout<<"獲取源圖像灰度圖過程完成.n"cvFindCorne
28、rSubPix(gray_image,image_points_buf,count,cvSize(11,11),cvSize(-1,-1),cvTermCriteria(CV_TERMCRIT_EPS+CV_TERMCRIT_ITER,30,0.01);cout<<"灰度圖亞像素化過程完成.n"cvDrawChessboardCorners(show,board_size,image_points_buf,count,found);cout<<"在源圖像上繪制角點過程完成.nn"cvShowImage("FindCorn
29、erPoints",show);cvWaitKey(0);if(total_per_image=count)step=successes*total_per_image;for(int i=step,j=0;j<total_per_image;+i,+j)CV_MAT_ELEM(*image_points,float,i,0)=image_points_bufj.x;CV_MAT_ELEM(*image_points,float,i,1)=image_points_bufj.y;CV_MAT_ELEM(*object_points,float,i,0)=(float)(j/cu
30、be_length);CV_MAT_ELEM(*object_points,float,i,1)=(float)(j%cube_length);CV_MAT_ELEM(*object_points,float,i,2)=0.0f;CV_MAT_ELEM(*point_counts,int,successes,0)=total_per_image;successes+;a+;cvReleaseImage(&show);cvDestroyWindow("FindCornerPoints");cvDestroyWindow("SrcPicture");
31、cout<<"*n"cout<<number_image<<"幀圖片中,標(biāo)定成功的圖片為"<<successes<<"幀.n"cout<<number_image<<"幀圖片中,標(biāo)定失敗的圖片為"<<number_image-successes<<"幀.nn"cout<<"*nn"cout<<"按任意鍵開始計算攝像機(jī)內(nèi)參數(shù).nn&quo
32、t;IplImage * show_colie=cvLoadImage("7.jpg",-1);CvMat * object_points2=cvCreateMat(successes*total_per_image,3,CV_32FC1);CvMat * image_points2=cvCreateMat(successes*total_per_image,2,CV_32FC1);CvMat * point_counts2=cvCreateMat(successes,1,CV_32SC1);for(int i=0;i<successes*total_per_imag
33、e;+i)CV_MAT_ELEM(*image_points2,float,i,0)=CV_MAT_ELEM(*image_points,float,i,0);CV_MAT_ELEM(*image_points2,float,i,1)=CV_MAT_ELEM(*image_points,float,i,1);CV_MAT_ELEM(*object_points2,float,i,0)=CV_MAT_ELEM(*object_points,float,i,0);CV_MAT_ELEM(*object_points2,float,i,1)=CV_MAT_ELEM(*object_points,fl
34、oat,i,1);CV_MAT_ELEM(*object_points2,float,i,2)=CV_MAT_ELEM(*object_points,float,i,2);for(int i=0;i<successes;+i)CV_MAT_ELEM(*point_counts2,int,i,0)=CV_MAT_ELEM(*point_counts,int,i,0);cvReleaseMat(&object_points);cvReleaseMat(&image_points);cvReleaseMat(&point_counts);CV_MAT_ELEM(*int
35、rinsic_matrix,float,0,0)=1.0f;CV_MAT_ELEM(*intrinsic_matrix,float,1,1)=1.0f;CvMat * rotation_vectors=cvCreateMat(successes,3,CV_32FC1);CvMat * translation_vectors=cvCreateMat(successes,3,CV_32FC1);cvCalibrateCamera2(object_points2,image_points2,point_counts2,cvGetSize(show_colie),intrinsic_matrix,di
36、stortion_coeffs,/NULL,NULL,0);rotation_vectors,translation_vectors,0);cout<<"攝像機(jī)內(nèi)參數(shù)矩陣為:n"cout<<CV_MAT_ELEM(*intrinsic_matrix,float,0,0)<<" "<<CV_MAT_ELEM(*intrinsic_matrix,float,0,1)<<" "<<CV_MAT_ELEM(*intrinsic_matrix,float,0,2)<&
37、lt;"nn"cout<<CV_MAT_ELEM(*intrinsic_matrix,float,1,0)<<" "<<CV_MAT_ELEM(*intrinsic_matrix,float,1,1)<<" "<<CV_MAT_ELEM(*intrinsic_matrix,float,1,2)<<"nn"cout<<CV_MAT_ELEM(*intrinsic_matrix,float,2,0)<<" &quo
38、t;<<CV_MAT_ELEM(*intrinsic_matrix,float,2,1)<<" "<<CV_MAT_ELEM(*intrinsic_matrix,float,2,2)<<"nn"cout<<"攝像機(jī)旋轉(zhuǎn)矩陣為:n"cout<<CV_MAT_ELEM(*rotation_vectors,float,0,0)<<" "<<CV_MAT_ELEM(*rotation_vectors,float,0,1)<
39、<" "<<CV_MAT_ELEM(*rotation_vectors,float,0,2)<<"nn"cout<<CV_MAT_ELEM(*rotation_vectors,float,1,0)<<" "<<CV_MAT_ELEM(*rotation_vectors,float,1,1)<<" "<<CV_MAT_ELEM(*rotation_vectors,float,1,2)<<"nn"c
40、out<<CV_MAT_ELEM(*rotation_vectors,float,2,0)<<" "<<CV_MAT_ELEM(*rotation_vectors,float,2,1)<<" "<<CV_MAT_ELEM(*rotation_vectors,float,2,2)<<"nn"cout<<"攝像機(jī)平移矩陣為:n"cout<<CV_MAT_ELEM(*translation_vectors,float,0,0)
41、<<" "<<CV_MAT_ELEM(*translation_vectors,float,0,1)<<" "<<CV_MAT_ELEM(*translation_vectors,float,0,2)<<"nn"cout<<CV_MAT_ELEM(*translation_vectors,float,1,0)<<" "<<CV_MAT_ELEM(*translation_vectors,float,1,1)<<
42、;" "<<CV_MAT_ELEM(*translation_vectors,float,1,2)<<"nn"cout<<CV_MAT_ELEM(*translation_vectors,float,2,0)<<" "<<CV_MAT_ELEM(*translation_vectors,float,2,1)<<" "<<CV_MAT_ELEM(*translation_vectors,float,2,2)<<"nn"cout<<"畸變系數(shù)矩陣為:n&quo
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年湖北省十堰市單招職業(yè)傾向性測試題庫新版
- 2024年醫(yī)用供應(yīng)裝置項目投資申請報告
- 生物-云南省師范大學(xué)附屬中學(xué)2025屆高三下學(xué)期開學(xué)考試試題和答案
- 2025年度國際貿(mào)易付款委托三方協(xié)議
- 2025年度全包家裝裝修與智能家居智能安防報警系統(tǒng)合同
- 2025年度單身公寓房產(chǎn)租賃合同(含智能家居)
- 2025年度信用卡旅游保險借款合同
- 二零二五年度勞動合同解除后離職員工離職后職業(yè)發(fā)展支持合同
- 2025年度XX小區(qū)智慧物業(yè)管理系統(tǒng)服務(wù)協(xié)議書
- 2025年度兼職協(xié)議書-旅游行業(yè)導(dǎo)游兼職人員合作協(xié)議
- JGJ79-2012 建筑地基處理技術(shù)規(guī)范
- 柱塞泵工作原理動畫演示
- 某電廠180m鋼筋混凝土煙囪施工方案
- 駕駛員心理健康教育培訓(xùn)課件
- 精準(zhǔn)高效的數(shù)字孿生光網(wǎng)絡(luò)技術(shù)探討和實踐
- 無痛胃腸鏡的護(hù)理查房
- 供應(yīng)鏈工作計劃
- 農(nóng)村生活污水檢測服務(wù)方案
- 110kV全封閉組合開關(guān)電器GIS擴(kuò)建及改造項目技術(shù)規(guī)范書通用部分
- 幼兒園食譜播報
- 駕駛員心理健康與安全駕駛
評論
0/150
提交評論