撲克紙牌識別_第1頁
撲克紙牌識別_第2頁
撲克紙牌識別_第3頁
撲克紙牌識別_第4頁
撲克紙牌識別_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、課 程 設 計課程名稱 題目名稱 學生學院 專業(yè)班級 學 號 學生姓名 指導教師 年 月 日摘要隨著圖像處理、人工智能、計算機技術的不斷發(fā)展,計算機識別技術也日趨成熟,逐漸轉為使用階段,目前計算機識別方法主要有兩種:1) 標記識別技術; 2) 基于圖像處理的識別技術。第一種方法是先在識別目標上預先安設一個標記,標記可以是IC條形碼等,再將目標的信息存儲在標記中,則從標記中可以識別出目標及其它相關的內容。這種方法的優(yōu)點是識別準確度高、速度快和可靠,但由于這種方法對硬件的要求,使得它存在了許多的局限性,若應用到撲克紙牌識別當中,需要為紙牌裝有一個微型的IC,這樣的設備價格十分昂貴,同時也摒棄了紙牌

2、的實際用途,普及實用性不強?;趫D像處理的識別技術相比較第一種方法的優(yōu)勢在于不需要給識別目標添加任何輔助設備就可以對其進行識別。應用到撲克紙牌識別當中,對目標信息的采集是非接觸性的,可以實時識別,非人工操作,工作效率高。這種方法是基于計算機視覺和圖像處理技術,作為一個軟件系統(tǒng),更方便維護和升級,通用性更強。存在著這幾方面的優(yōu)勢,基于圖像處理的識別技術具有很大的發(fā)展空間。傳感器觸發(fā)CCD攝像頭圖像采集紙牌圖像預處理紙牌特征提取特征匹配撲克紙牌識別數(shù)據(jù)庫傳輸基于圖像處理的紙牌識別系統(tǒng)構成數(shù)據(jù)輸出基于圖像處理的紙牌識別主要包括紙牌圖像預處理(傾斜校正與定位)、特征提取、特征匹配、紙牌識別等方面的技術

3、。系統(tǒng)構成如上圖所示,當系統(tǒng)發(fā)現(xiàn)監(jiān)視圖像發(fā)生變化時,觸發(fā)圖像采集,通過CCD攝像頭攝取的紙牌圖像,然后識別系統(tǒng)對紙牌圖像進行一系列處理從而識別出紙牌,輸出識別結果。紙牌圖像預處理傳感器觸發(fā)CCD攝像頭進行圖像采集后可以得到一張圖像,圖像中包括背景和待識的目標紙牌,但目標紙牌在圖像中并不一定是正放的,許多的時候紙牌與圖像的邊緣形成一定的傾斜角度,如下圖所示:紙牌物理與圖像邊緣形成傾斜角度。因此,紙牌識別之前,必須先對目標紙牌進行傾斜校正和定位。對于整個紙牌識別系統(tǒng)來說,紙牌識別精確度的高低很大程度下取決于紙牌的傾斜校正與定位精確度高低,這是十分重要的一步。紙牌形狀為一矩形,紙牌是否傾斜可以以紙牌

4、的物理邊緣是否與圖像邊緣傾斜為準則,若紙牌的物理邊緣與圖像邊緣呈0或90度(平放或正放),則紙牌沒有發(fā)生傾斜,反之,則存在傾斜。根據(jù)以上分析的特點,可以利用Hough變換和邊緣檢測結合的方法實現(xiàn)紙牌的傾斜校正與定位。Hough變換是利用極坐標變換的方法,在圖像中進行像素的累加,從而估算出最長直線與圖像邊緣所成傾斜的角度。如下左圖所示,首先在原圖像中引入、和L三個參數(shù),通過和參數(shù)的變化可以累加出對應L的值(直線長度):利用Hough變換,可以很容易地得出在圖像中最長直線的長度和該直線與圖像邊緣對應所成的角度。對于大多數(shù)的紙牌來說,我們可以直接把檢測出來最大的L所對應的傾斜角視為紙牌的傾斜,這是因

5、為,紙牌本身擁有的一條較長邊緣,而任何角度上的直線像素累加都不能與之相比。紙牌本身具有一條較長的邊緣。但對于一些內部圖案很復雜的紙牌,如J、Q、K和JOKER,由于圖案邊緣復雜性的原因,Hough變換后就會產生一些非紙牌物理邊緣而長度超過物理邊緣的線條,此時,該線條對應的傾斜角就不是紙牌與圖像所成的真實傾斜角度。紙牌內部出線了大量的線條信息,影響對紙牌物理邊緣的確認。這些復雜線條信息的存在,會對紙牌物理邊緣的確認產生十分大的影響,因此,在Hough變換之前,必須采取一些操作,最大程度地去除這些復雜的邊緣信息的同時,保留紙牌的物理邊緣信息??梢栽诮涍^邊緣檢測的前提下,通過形態(tài)學閉操作把紙牌內部的

6、復雜線條模糊化,然后再對模糊化后的圖像進行邊緣檢測,具體效果如下圖:第二次的邊緣檢測只保留了紙牌的物理邊緣。采用圓形結構的形態(tài)學閉操作模糊了內部的邊緣信息。撲克牌內部存在邊緣信息。經過以上的步驟后,再對圖像進行Hough變換,就可以準確地確認出紙牌的物理邊緣,然后對紙牌進行傾斜校正與定位,Matlab程序實現(xiàn)如下:function poker=rectify(rgbimage)%撲克目標校正且定位函數(shù)grey=rgb2gray(rgbimage);%灰度化圖像ed1=edge(grey,'sobel','both');%灰度化圖象邊緣化bw1=imclose(e

7、d1,strel('disk',20);%形態(tài)學閉操作圓形結構體%以上形態(tài)學操作為了模糊紙牌內部的線條結構%從而減小J,Q,K,JOKER紙牌等內部復雜邊緣對定位的影響ed2=edge(bw1,'sobel','both');%對紙牌的物理邊緣進行檢測bw2=bwmorph(ed2,'dilate');%結構性膨脹加強邊緣效果hough=radon(bw2,-90:90);%-90到90度的hough變換m,n=size(hough);rotate=0;%傾斜角值sline=0;%最長直線長度for i=1:m for j=1:n

8、 if hough(i,j)>sline; rotate=j-1;sline=hough(i,j); end endended3=bwmorph(ed2,'clean',10);bw3=imrotate(ed3,-rotate);%預校正m,n=find(bw3);%預測校正后的目標位置rgb=imrotate(rgbimage,-rotate,'bilinear');%傾斜校正poker=rgb(min(m):max(m),min(n):max(n),:);%定位m,n=size(poker);if n>m poker=imrotate(poker

9、,90,'bilinear');end紙牌特征提取紙牌具有很多的特征,如字符特征,花形特征,圖案特征,顏色特征等,不同的紙牌具有不同的特征。根據(jù)特征的組合,可以產生出54紙不同的紙牌。紙牌識別的第一步,必須在待識別的紙牌中提取它所具備的特征。由于紙牌內部的圖案較復雜,對其操作運算量較大,不以其作為識別的特征。而字符和花形特征結構較為簡單,易于操作,所以應該在紙牌中提取字符與花形的特征,并以這兩個特征識別出紙牌。在紙牌傾斜校正與定位后,根據(jù)紙牌的固有屬性,可以大概地定位出紙牌上字符與花形的位置,然后把字符與花形粗略提取出來。提取出字符與花形的大概位置后,必須對提取出的圖像進行二值

10、化,進一步提取特征。二值化是指整幅圖像像素僅有黑、白二值的圖像。由于 “非黑即白”的特性,二值圖像在數(shù)字圖像處理中占有非常重要的地位。二值化的關鍵是要找到合適的閾值來區(qū)分對象和背景。閾值選取有許多的方法,常用的閾值選取方法有:直方圖雙峰法、自適應局部閾值法、最佳閾值法等。Ostu算法是最佳閾值算法的一種。Ostu算法是利用最大類間方差法,判決分析最小二乘法的原理基礎上推導得出的。它的計算步驟是先計算圖像的灰度直方圖概率函數(shù),然后以閾值為基準將灰度級劃分為兩類,Ostu算法求二值化最佳閾值的Matlab程序實現(xiàn)如下:function level=ostu(IMAGE)%最大類間方差ostu算法,

11、求最佳閾值m,n,s=size(IMAGE);if s=1 image=IMAGE;endif s=3 image=RGB2gray(IMAGE);endranks=256;counts=imhist(image,ranks);p=counts/sum(counts);omega=cumsum(p);mu=cumsum(p.*(0:ranks-1)');mu_t = mu(end);sigma2=0;%otsu類間方差T=0;%原始閾值h=0;Hmax=0;w0=0;w1=0;u0=0;u1=0;HStore=zeros(1,256);for i=1:ranks圖像二值化前后效果對比。

12、 if (omega(i)=0)|(1-omega(i)=0) continue; end; w0=omega(i);w1=1-w0; u0=mu(i)/w0;u1=(mu_t-mu(i)/w1; sigma2=w0*(u0-mu_t).2+w1*(u1-mu_t).2; h=sigma2;HStore(i)=h;endHmax = max(HStore);isfinite_maxval = isfinite(Hmax);if isfinite_maxval idx = mean(find(HStore = Hmax); level = (idx - 1) / (ranks - 1);else

13、 level = 0.0;end在字符和花形粗略定位并且二值化之后,有時會殘留一些很長邊緣信息。這些邊緣信息多數(shù)來自于紙牌本身的圖案邊緣或背景殘留。由于這些線條多數(shù)與字符和花形的顏色相近,因此在圖像二值化之后仍然會保留下來。這些多余的邊緣信息給特征的正確提取帶來了很大的影響,所以在字符分割之前去除這些干擾是必要的。這些邊緣信息都具有連續(xù)不跳變的特性,因此可以利用這個特性對二值化圖像進行掃描,當出現(xiàn)超過一定長度不跳變的線條,把它視為干擾信息,并且把它去除。從左至右進行掃描,當列方向上出現(xiàn)超過1/3邊長長度不跳變的線條,把它視為干擾線條,并把它去除。粗略定位并二值化后,出現(xiàn)了干擾線條。 清除干擾線

14、條的Matlab實現(xiàn)程序如下:function str=reduce(bwstr);%去除干擾邊緣信息m,n=size(bwstr);temp=ones(m,n);num=1;for j=1:n count=0; for i=1:m if bwstr(i,j)=0;%線條不連續(xù) count=0;continue; else count=count+1;%連續(xù)不跳變點數(shù)增加 if count>=m/3;%連續(xù)不跳變長度超過1/3邊長 break; end end end if count>=m/3 line(num)=j;清除干擾線條后分割出字符與花形。 num=num+1;%記錄掃

15、描到線條位置 endendfor i=1:num-1%清除干擾邊緣 for j=1:m temp(j,line(i)=0; endendstr=logical(double(bwstr).*temp);清除干擾線條前后效果比較。這個算法對斷裂較多的線條沒有作用,但能夠在一定程度下消除了線條對目標信息的干擾,為紙牌識別的準確度提供一個保障。紙牌識別在識別技術中,被廣泛采用的有兩類特征:結構特征和統(tǒng)計特征。常用的結構特征主要有:筆道密度函數(shù)、空洞和缺口、字符的特殊節(jié)點數(shù)。而常用的統(tǒng)計特征主要有復雜指數(shù)、粗網(wǎng)格特征、垂直和水平投影。紙牌中有字符和花形兩種字符,字符包括A、2、3、4、5、6、7、8、

16、9、10、J、Q、K、JOKER十四種;而花形包括:黑桃、紅桃、梅花和方片四種。不論采用結構特征還是統(tǒng)計特征的匹配方法方法,均需要與一個系統(tǒng)預知道的標準符號模板庫進行匹配。結構特征匹配的識別準確率較高,但是運算量十分大,用于符號結構較復雜的識別;統(tǒng)計特征匹配識別準確率相對較低,但運算量少,適用于結構簡單的符號識別。紙牌只有14個字符和4個花形符號,而且結構較簡單,這里選用統(tǒng)計特征匹配。對于不同的符號,其投影均不相同。符號“A”的水平投影圖。符號“黑桃”的水平投影圖。因此,可以利用待識別符號投影與模板中各符號的投影求均方差,選擇均方差最?。磁c待識別符號投影偏離最?。┧鶎哪0宸栕鳛樽R別結果

17、。在符號中,JOKER信息像素所占數(shù)目較多,可以先對其確認。在匹配前先對符號進行一定的結構性膨脹,由于JOKER具有多個字符,在膨脹后非零像素增加的數(shù)量定會大大的大于其它紙牌。這里設置一個臨界值,當某待識別紙牌特征像素數(shù)量大于此臨界值時把這張紙牌識別為JOKER,小于臨界值再與其他模板進行匹配,這樣就可以不需要額外加入JOKER模板,同時也一定程度下提高了系統(tǒng)的識別效率。Matlab - GUI程序實現(xiàn)新建一個空的GUI任務:創(chuàng)建一個空的GUI模板設置任務名稱和保存路徑設置菜單欄:編輯菜單欄添加菜單選項菜單欄選擇項映射Callback函數(shù):about_Callback()binary_Call

18、back()recognition_Callback()getsymstr_Callback()gray_Callback()recitify_Callback()new_Callback()exit_Callback()各菜單選擇項映射函數(shù)具體定義:打開(O)打開一幅圖像,并且顯示到窗口上。function new_Callback(hObject, eventdata, handles)global IMAGE;global POKER;global GRAY;global BW;global BWSTR;name=0;name,path=uigetfile('*.bmp'

19、'*.jpg''*,tif','打開圖像');if name=0;%沒有打開圖像 return;endIMAGE=imread(strcat(path,name);%成功打開圖像POKER=0;GRAY=0;BW=0;BWSTR=0;%其他圖像復位subplot(1,1,1),imshow(IMAGE),title('撲克紙牌圖像');顯示紙牌圖像打開一張紙牌圖像 傾斜矯正與定位(Y)對紙牌圖像進行傾斜校正和紙牌定位,計算定位耗時并顯示。function rectify_Callback(hObject, eventdata, h

20、andles)global IMAGE;global POKER;if IMAGE=0;%未打開圖像 msgbox('請先打開一幅撲克圖像','錯誤','error');else tic;%計算校正與定位用時 POKER=rectify(IMAGE);%自定義函數(shù)rectify() if toc>5%設置超時時間為3秒 msgbox('圖像校正定位超時','錯誤','error'); return; end time=num2str(toc); str=strcat('校正與定位耗時&

21、#39;,time,'秒'); subplot(1,1,1),imshow(POKER),title('撲克紙牌'); msgbox(str,'消息');end顯示傾斜校正和定位耗時 圖像二值化(B)對紙牌圖像進行二值化,閾值用最佳閾值ostu算法計算得出。function binary_Callback(hObject, eventdata, handles)global IMAGE;%全局變量global POKER;global GRAY;global BW;if IMAGE=0%未打開圖像 msgbox('請先打開一幅撲克圖像&#

22、39;,'錯誤','error');elseif POKER=0%未進行圖像校正 msgbox('請先對圖像進行校正定位','錯誤','error');elseif GRAY=0%未進行圖像灰度化 msgbox('請先對圖像進行灰度化','錯誤','error');else bw=im2bw(GRAY,ostu(GRAY);%自定義函數(shù)ostu() BW=logical(abs(double(bw)-1); subplot(1,1,1),imshow(BW),titl

23、e('圖像二值化');end灰度化圖像 紙牌字符提取(P)提取紙牌的特征字符。function getsymstr_Callback(hObject, eventdata, handles)global IMAGE;global POKER;global GRAY;global BW;global BWSTR;if IMAGE=0%未打開圖像 msgbox('請先打開一幅撲克圖像','錯誤','error');elseif POKER=0%未進行圖像校正 msgbox('請先對圖像進行校正定位','錯誤&#

24、39;,'error');elseif GRAY=0%未進行圖像灰度化 msgbox('請先對圖像進行灰度化','錯誤','error');elseif BW=0%未進行圖像二值化 msgbox('請先對圖像進行二值化','錯誤','error');else m,n=size(GRAY); pokerstr=GRAY(2:m/2,n/20:n/5.5);%字符粗略定位 bw=im2bw(pokerstr,ostu(pokerstr);%自定義函數(shù)ostu() bw1=bwmorph(

25、bw,'clean');%清除孤立點 bw2=logical(abs(double(bw)-1);%二值圖像反色 bw3=reduce(bw2);%自定義函數(shù)reduce() m,n=size(bw3); temp=sum(bw3);shadow(2:n+1)=temp;shadow(1)=0;shadow(n+2)=0; for i=2:n+1 if shadow(i)=0&shadow(i-1)=0&shadow(i+1)=0%出現(xiàn)孤立線條 for j=1:m bw3(j,i-1)=0;%刪除孤立線條列 end end end m,n=find(bw3);

26、BWSTR=bw3(min(m):max(m),min(n):max(n); subplot(1,1,1),imshow(BWSTR),title('紙牌特征字符');end花形字符 撲克識別(R)對字符特征進行匹配識別,并且輸出識別結果。function recognition_Callback(hObject, eventdata, handles)global IMAGE;global POKER;global GRAY;global BW;global BWSTR%紙牌字符模板,34*22投影str1=6 6 6 6 8 8 10 10 10 10 8 8 8 8 10

27、 10 8,. 8 8 8 12 12 16 16 12 12 8 8 8 8 16 16 16 16;%Astr2=10 10 16 16 12 12 12 12 12 12 6 6 4 4 8 8,. 8 8 6 6 6 6 6 6 6 6 8 8 10 10 22 22 22 22;%2str3=22 22 14 14 10 10 8 8 8 8 8 12 12 14 14 6,. 6 4 4 4 4 4 4 4 4 8 8 8 12 12 18 18 12 12;%3str4=2 2 4 4 6 6 8 8 10 10 12 12 10 10 10 10 8 8,. 10 10 12

28、12 20 20 22 22 6 6 6 6 6 6 8 8;%4str5=18 18 16 16 4 4 4 4 4 16 16 16 16 6 6 4 4 4 4,. 4 4 4 4 4 4 10 12 12 16 16 12 12 2 2;%5str6=9 9 15 15 7 7 5 5 3 3 5 5 14 14 18 18 12 12 9,. 9 9 9 11 11 11 11 7 7 10 10 14 14 11 11;%6str7=15 15 22 22 14 14 9 9 5 5 5 5 5 5 4 4 4 4 6 6,. 4 4 4 4 6 6 4 4 4 4 4 4 4 4

29、;%7str8=10 10 16 16 10 10 6 6 8 8 6 6 12 12 14 14 14 14,. 10 10 8 8 8 8 8 8 8 8 14 14 18 18 10 10;%8str9=14 14 16 16 8 8 8 8 12 12 12 10 10 12 12 12 12,. 18 18 16 16 4 4 4 4 6 6 6 12 12 14 14 8 8;%9str10=10 10 16 16 14 14 12 12 12 12 12 12 12 12 12 12,. 12 12 12 12 12 12 12 12 12 12 12 12 16 16 16 1

30、6 10 10;%10str11=13 13 11 11 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5,. 5 5 5 9 9 9 9 14 14 13 13 4 4;%Jstr12=11 11 10 10 10 10 6 6 6 6 6 6 6 6 6 6 6 10 10,. 14 14 16 16 12 12 10 10 10 10 10 18 18 12 12;%Qstr13=20 20 20 20 12 12 10 10 10 10 10 10 8 8 12 12,. 12 12 12 12 10 10 10 10 10 10 8 8 10 10 18 18 20

31、 20;%KSTR=str1;str2;str3;str4;str5;str6;str7;str8;str9;str10;str11;str12;str13;%紙牌花形模板,24*20投影style1=4 4 6 6 8 8 12 12 16 16 16 16,. 20 20 20 20 20 20 14 14 6 6 6 6;%黑桃style2=12 12 20 20 20 20 20 20 18 18 16 16,. 14 14 12 12 8 8 6 6 4 4 2 2;%紅桃style3=4 4 8 8 10 10 10 10 8 8 16 16,. 20 20 20 20 20 20

32、 12 12 4 4 4 4;%梅花style4=2 2 4 4 6 6 12 12 16 16 20 20 20 20,. 16 16 12 12 6 6 6 6 2 2;%方片STYLE=style1;style2;style3;style4;if IMAGE=0%未打開圖像 msgbox('請先打開一幅撲克圖像','錯誤','error');elseif POKER=0%未進行圖像校正 msgbox('請先對圖像進行校正定位','錯誤','error');elseif GRAY=0%未進行圖像

33、灰度化 msgbox('請先對圖像進行灰度化','錯誤','error');elseif BW=0%未進行圖像二值化 msgbox('請先對圖像進行二值化','錯誤','error');elseif BWSTR=0%未提取特征 msgbox('請先提取圖像字符','錯誤','error');else sym=imclose(BWSTR,strel('disk',3);%粗略估算特征面積大小 shadow=sum(sym); if max

34、(shadow)>=40%像素過多識別為為JOKER result=strcat('識別結果:','JOKER'); msgbox(result,'消息','warn'); else sym=bwmorph(BWSTR,'clean');%清除孤立點 shadow=(sum(sym,2)'%側面投影 len=length(shadow); for i=2:len-1%搜索數(shù)字符號與花形符號的分界點 if shadow(i)=0&shadow(i+1)=0%檢測到靠近數(shù)字一邊的邊界 bonder

35、1=i+1; i=bonder1; continue; end if shadow(i)<=1&shadow(i+1)>1%檢測到靠近花形一邊的邊界 bonder2=i; break; end end bonder=(bonder1+bonder2)/2;%取兩個邊界的中間作為符號分界線 SYM1=sym(1:bonder,:);%數(shù)字符號 m,n=find(SYM1); SYM1=SYM1(min(m):max(m),min(n):max(n); SYM1=imresize(SYM1,34 22);%模板歸一化 SYM2=sym(bonder:len,:);%花形符號 m

36、,n=find(SYM2); SYM2=SYM2(min(m):max(m),min(n):max(n); SYM2=imresize(SYM2,24,20);%模板歸一化 shadow1=(sum(SYM1,2)'shadow2=(sum(SYM2,2)' %字符匹配 errormean=50;sn1=0; for i=1:13%搜索最佳匹配的模板 temp=STR(i,:); error=abs(shadow1-temp); error=mean(error,2);%求絕對均差 if error<errormean; sn1=i;errormean=error; en

37、d end if errormean>=3;%誤差過大 sn1=0; end %花形匹配 errormean=50;sn2=0; for i=1:4%搜索最佳匹配的模板 temp=STYLE(i,:); error=abs(shadow2-temp); error=mean(error,2);%求絕對均差 if error<errormean; sn2=i;errormean=error; end end if errormean>=3;%誤差過大 sn2=0; end %特征映射 switch sn1 case 0 result1='不能識別出字符' cas

38、e 1 result1='A' case 10 result1='10' case 11 result1='J' case 12 result1='Q' case 13 result1='K' otherwise result1=num2str(sn1);%對應數(shù)字轉成字符型 end switch sn2 case 1 result2='黑桃' case 2 result2='紅桃' case 3 result2='梅花' case 4 result2='方片

39、' otherwise result2='不能識別出花形' end result=strcat('識別結果:',result2,result1); msgbox(result,'消息','warn'); endend輸出紙牌識別結果 心得體會程序能夠較準確地實現(xiàn)紙牌識別功能,但此識別系統(tǒng)對圖像中紙牌的要求較為嚴格,攝像時不能出現(xiàn)紙牌扭曲,或者攝像頭與紙牌存在較大的傾斜角。在研究過程中,感覺到還有許多可以進一步提高對紙牌識別的能力的方法值得繼續(xù)研究。對于此紙牌識別系統(tǒng)來說,最需要改進的地方我覺得有如下幾個方面:(1) 符號的定位方面。只根

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論