数字图像处理纸牌识别课程设计.doc
《数字图像处理纸牌识别课程设计.doc》由会员分享,可在线阅读,更多相关《数字图像处理纸牌识别课程设计.doc(31页珍藏版)》请在咨信网上搜索。
(完整word版)数字图像处理纸牌识别课程设计 课 程 设 计 课程名称___数字图像处理______ 题目名称______纸牌识别________ 学生学院______ ________ 专业班级__ ___ 学 号__ ________ 学生姓名____ _ _______ 指导教师_____ _曹江中_______ 一、设计题目 (1)、在VC++环境下实现打开、显示一幅纸牌图(设计资料中有纸牌图)。 (2)、将提供的几幅图片中的纸牌进行分类和识别,要求: a、判断出是那种类型(共四类:红桃,梅花、黑桃、方片); b、检测出点数(1、2…10); c:将上述检测的结果输出。 二、设计目的 通过设计,以C++为工具,实现数字图像处理。会用数字图像处理知识对图像进行增强,如全局阈值,对图像进行旋转,边缘检测,对图像进行平移,截取图像特征并会用简单的模板匹配方法匹配判断图片内容。 学会使用FMC。 三设计内容。 (1) 基本思想为: 对图片进行中值滤波去除噪声,对图像进行全局阈值处理,用锐化模板检测,纸牌边缘,左方开始测量每个点当碰到纸牌边缘时灰度为255,此时记下像素距离,从而对得到纸牌水平位置,同理得图片竖直距离,对图片进行平移,并截取左上角的特征,对特征进行基本处理,如二值化.逐一加载模板,进行匹配,匹配原理为特征于模板相同像素的个数,如个数很高则匹配成功,从而识别纸牌. (2)在VC下建立FMC平台.使用DIB类处理bmp格式文件。 工程名为pokeridentyfy.CPokeridentyfyview。中包的DIB类有 CDIB m_dib; CDIB mid_boader; CDIB boaer_crect CDIB cutmask; CDIB forcut; CDIB masknumber; CDIB masktype; 用于存放,处理和显示图片。 制作菜单每个对于图像处理功能,一个按键调用一个处理函数,也可一个按键调用多个处理函数。菜单及其功能如下图 打开图像的代码为功能为大开所处理图像: void CPokeridentifyView::OnOpenimage() { // TODO: Add your command handler code here static char szFilter[]="BMP文件(*.bmp)|*。bmp||”; //定义过滤文件的类型 CFileDialog dlg(TRUE,”bmp”,NULL, OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,szFilter);//定义文件对话框对象 CString filename; int ret=dlg.DoModal(); //运行打开文件对方框 if(ret==IDOK) { filename=dlg。GetFileName(); //获取所选择图像的路径 m_dib。LoadFromFile(filename); //加载图像 if(!m_dib.m_bLoaded) //判断是否加载图像成功 { AfxMessageBox("图像打不开”); return; } mid_boader。LoadFromFile(filename); //加载图像 if(!mid_boader.m_bLoaded) //判断是否加载图像成功 { AfxMessageBox(”图像打不开"); return; } boaer_crect。LoadFromFile(filename); //加载图像 if(!boaer_crect。m_bLoaded) //判断是否加载图像成功 { AfxMessageBox("图像打不开"); return; } cutmask。LoadFromFile(”TTcut。bmp”); //加载图像 if(!cutmask.m_bLoaded) //判断是否加载图像成功 { AfxMessageBox(”图像打不开"); return; } forcut.LoadFromFile(filename); //加载图像 if(!forcut。m_bLoaded) //判断是否加载图像成功 { AfxMessageBox(”图像打不开”); return; } masknumber。LoadFromFile(”1。bmp”); //加载图像 if(!masknumber.m_bLoaded) //判断是否加载图像成功masktype { AfxMessageBox(”图像打不开”); return; } masktype。LoadFromFile("111.bmp"); //加载图像 if(!masktype。m_bLoaded) //判断是否加载图像成功 { AfxMessageBox(”图像打不开”); return; } } 打开一图片后为: 中值滤波的代码为: void CPokeridentifyView::OnMidiamaskImage() { // TODO: Add your command handler code here if(!m_dib.m_bLoaded) { AfxMessageBox("图像还打开,请先打开图像!”); return; } //获取图像宽和高 int nw=m_dib.GetDIBWidth(); int nh=m_dib.GetDIBHeight(); int i,j; BYTE * ptemp=(BYTE *) new BYTE[nw*nh]; memset(ptemp,0,nw*nh); double mid[9]; for(j=3/2;j<nh-3/2;j++) for(i=3/2;i<nw-3/2;i++) { double result=0; int k,h; for(k=0;k<3;k++)//k行h列 for(h=0;h〈3;h++) { mid[k*3+h]=m_dib。m_pdata[(j-k)*nw+i-h]; int ii,jj,tempmid; double sweep; for(ii=0;ii〈8;ii++) { tempmid=ii; for(jj=ii;jj<=8;jj++) { if(mid[jj]〈mid[tempmid])tempmid=jj; } sweep=mid[ii]; mid[ii]=mid[tempmid]; mid[tempmid]=sweep; } result=mid[4]; if(result>255)result=255; if(result〈0)result=0; } ptemp[j*nw+i]=result; } memcpy(m_dib。m_pdata,ptemp,nw*nh); m_dib。UpdateData(); memcpy(mid_boader.m_pdata,ptemp,nw*nh); mid_boader.UpdateDatadup(); delete[]ptemp; //刷新屏幕 Invalidate(); } 调用后结果为: 全局门限的代码中先计算图像的直方图,以一个点(一般去中间值)把直方图分成两份,分别计算两部分的灰度均值,m1与m2,由(m1+m2)/2得到新的阈值与灰度分割点,知道新阈值与旧的阈值相差不到。用新的阈值进行二值化。代码为: void CPokeridentifyView::OnAllthrImage() { // TODO: Add your command handler code here if(!m_dib.m_bLoaded) { AfxMessageBox(”图像还打开,请先打开图像!"); return; } //获取图像宽和高 int nw=m_dib.GetDIBWidth(); int nh=m_dib。GetDIBHeight(); int i,j; double p[256];//存放直方图 int throld=200,thrnew=210,m1=0,m2=0;//匹配时用180 for(i=0;i〈256;i++) p[i]=0; for(j=0;j<nh;j++) for(i=0;i<nw;i++) { p[m_dib.m_pdata[j*nw+i]]++; //统计各像素总数 } for(i=0;i〈256;i++) { p[i]=p[i]*1。0/(nw*nh); //直方图归一化 } do { throld=thrnew; for(i=0;i<=throld;i++) { m1=m1+p[i]*i; } for(i=throld+1;i〈256;i++) { m2=m2+p[i]*i; } thrnew=(m1+m2)/2; } while( abs(thrnew=throld)<5 ); for(j=0;j〈nh;j++) for(i=0;i<nw;i++) { //对图像的第j行、第i列的象素的灰度信息进行判断,修改 if(m_dib.m_pdata[j*nw+i]〉thrnew) m_dib。m_pdata[j*nw+i]=255; else m_dib.m_pdata[j*nw+i]=0; } //将修改的m_pdata的数据赋值给m_pDIBData,以显示修改的结果 m_dib。UpdateData(); memcpy(mid_boader.m_pdata,m_dib。m_pdata,nw*nh); mid_boader.UpdateData(); //刷新屏幕 Invalidate(); } 结果为: 对图像进行边缘检测的代码为: void CPokeridentifyView::OnFindborderImage() { // TODO: Add your command handler code here if(!m_dib.m_bLoaded) { AfxMessageBox("图像还打开,请先打开图像!”); return; } //获取图像宽和高 int nw=m_dib.GetDIBWidth(); int nh=m_dib.GetDIBHeight(); int i,j; BYTE * ptemp=(BYTE *) new BYTE[nw*nh]; memset(ptemp,0,nw*nh); double mask[3][3]={—1,—1,-1,-1,8,—1,—1,—1,—1}; for(j=3/2;j〈nh-3/2;j++) for(i=3/2;i<nw—3/2;i++) { double result=0; int k,h; for(k=0;k〈3;k++) for(h=0;h〈3;h++) result+=mask[k][h]*m_dib。m_pdata[(j—k)*nw+i—h]; if(result>255)result=255; if(result〈0)result=0; ptemp[j*nw+i]=result; } memcpy(m_dib。m_pdata,ptemp,nw*nh); m_dib.UpdateData(); memcpy(boaer_crect。m_pdata,ptemp,nw*nh); boaer_crect.UpdateData(); delete[]ptemp; //刷新屏幕 Invalidate(); } 结果为: 对图片进行测量并平移校正的代码为: void CPokeridentifyView::OnAutomoveImage() { // TODO: Add your command handler code here if(!m_dib.m_bLoaded) { AfxMessageBox("图像还打开,请先打开图像!”); return; } //获取图像宽和高 int nw=m_dib。GetDIBWidth(); int nh=m_dib.GetDIBHeight(); int i,j; BYTE * ptemp=(BYTE *) new BYTE[nw*nh]; memset(ptemp,0,nw*nh); int movedownj,moverighti;//移动像素距离 int h,k; int temp; int nwmove[7],nhmove[7]; int nwmlength[7]={600,600,600,600,600,600,600},nhmlength[7]={600,600,600,600,600,600,600}; int bnw,bnh; for(i=0;i<7;i++) { nhmove[i]=nh*(i+1)/8; nwmove[i]=nw*(i+1)/8; } for(k=0;k<7;k++)//寻找水平距离 { for(i=0;i〈nw;i++) { if(m_dib.m_pdata[nhmove[k]*nw+i]!=0) { nhmlength[k]=i; break; } } for(k=0;k〈7;k++)//寻找竖直距离 { for(j=nh;j〉0;j—-) { if(m_dib。m_pdata[j*nw+nwmove[k]]!=0) { nwmlength[k]=nh—j; break; } } } for(i=0;i〈6;i++)//水平测量量nhmlegnth的排列 { k=i; for(j=i;j〈7;j++) { if(nhmlength[j]<nhmlength[k])k=j; } temp=nhmlength[k]; nhmlength[k]=nhmlength[i]; nhmlength[i]=temp; } bnw=nhmlength[0]; for(i=0;i〈6;i++)//竖直测量量nwmlength的排列 { k=i; for(j=i;j<7;j++) { if(nwmlength[j]〈nwmlength[k])k=j; } temp=nwmlength[k]; nwmlength[k]=nwmlength[i]; nwmlength[i]=temp; } bnh=nwmlength[0]; movedownj=-bnh; moverighti=-bnw; for(j=0;j<nh;j++)//进行平移 for(i=0;i〈nw;i++) { h=j-movedownj; k=i+moverighti; if(h〉0&&h〈nh&&k>0&&k〈nw) ptemp[h*nw+k]=m_dib。m_pdata[j*nw+i]; } memcpy(m_dib.m_pdata,ptemp,nw*nh); m_dib。UpdateData(); memcpy(boaer_crect。m_pdata,ptemp,nw*nh); boaer_crect。UpdateDatadup();//刷新屏幕 Invalidate(); /***********************************/ for(j=0;j<nh;j++) for(i=0;i<nw;i++) { h=j-movedownj; k=i+moverighti; if(h>0&&h〈nh&&k>0&&k<nw) ptemp[h*nw+k]=forcut.m_pdata[j*nw+i]; } memcpy(forcut。m_pdata,ptemp,nw*nh); forcut.UpdateData(); delete[]ptemp; } void CPokeridentifyView::OnRecreactImage() {// TODO: Add your command handler code here if(!m_dib.m_bLoaded) { AfxMessageBox("图像还打开,请先打开图像!"); return; } //获取图像宽和高 int nw=m_dib.GetDIBWidth(); int nh=m_dib。GetDIBHeight(); int i,j; int h,k; BYTE * ptemp=(BYTE *) new BYTE[nw*nh]; memset(ptemp,0,nw*nh); int movedownj,moverighti;//移动像素距离 int bnh; int moveup=500; for(j=0;j<nh;j++) { if(m_dib。m_pdata[j*nw+50]==255) { moveup=j; break; } } bnh=moveup; movedownj=bnh; moverighti=0; for(j=0;j〈nh;j++) for(i=0;i<nw;i++) { h=j+movedownj; k=i—moverighti; if(h〉0&&h〈nh&&k>0&&k〈nw) ptemp[h*nw+k]=m_dib.m_pdata[j*nw+i]; } memcpy(m_dib.m_pdata,ptemp,nw*nh); m_dib.UpdateData(); //刷新屏幕 delete[]ptemp; Invalidate(); } 平移结果为: 截取特权的代码为: void CPokeridentifyView::OnCrectGetfeature() { // TODO: Add your command handler code here if(!cutmask。m_bLoaded) { AfxMessageBox(”图像还打开,请先打开图像!”); return; } //获取图像宽和高 int nw=m_dib。GetDIBWidth(); int nh=m_dib。GetDIBHeight(); int i,j; BYTE * ptemp=(BYTE *) new BYTE[nw*nh]; memset(ptemp,0,nw*nh); int nw1=cutmask。GetDIBWidth(); int nh1=cutmask。GetDIBHeight(); for(j=nh-nh1;j<nh;j++) {for(i=0;i<nw1;i++) { cutmask。m_pdata[(j—(nh—nh1))*nw1+i]=forcut.m_pdata[j*nw+i]; } } cutmask.UpdateDatadup(); Invalidate(); } 结果为: 对特征进行处理并加载模板,进行匹配,并显示匹配结果的代码为: void CPokeridentifyView::OnFeatureRecognize() { // TODO: Add your command handler code here if(!cutmask.m_bLoaded) { AfxMessageBox(”图像还打开,请先打开图像!”); return; } //获取图像宽和高 int nw=cutmask。GetDIBWidth(); int nh=cutmask.GetDIBHeight(); int i,j; int k,h,t; BYTE * ptemp=(BYTE *) new BYTE[nw*nh]; /**************************************************************************************/ //特征增强 double p[256]; int throld=200,thrnew=180,m1=0,m2=0;//匹配时用180 for(i=0;i<256;i++) p[i]=0; for(j=0;j<nh;j++) for(i=0;i<nw;i++) { p[cutmask。m_pdata[j*nw+i]]++; //统计各像素总数 } for(i=0;i〈256;i++) { p[i]=p[i]*1.0/(nw*nh); //直方图归一化 } do { throld=thrnew; for(i=0;i<=throld;i++) { m1=m1+p[i]*i; } for(i=throld+1;i<256;i++) { m2=m2+p[i]*i; } thrnew=(m1+m2)/2; } while( abs(thrnew=throld)<5 ); for(j=0;j<nh;j++) for(i=0;i<nw;i++) { //对图像的第j行、第i列的象素的灰度信息进行判断,修改 if(cutmask。m_pdata[j*nw+i]〉thrnew) ptemp[j*nw+i]=255; else ptemp[j*nw+i]=0; } memcpy(cutmask。m_pdata,ptemp,nw*nh); cutmask。UpdateData(); Invalidate(); //识别 int cardnumber; float nuberthr=0.9; float typethr=0。92; CString filename; /*****************************************************************************/ //数字识别 for(t=0;t<10;t++) {switch(t) { case 0:filename=”1。bmp”;break; case 1:filename="2.bmp";break; case 2:filename="3.bmp";break; case 3:filename="4.bmp”;break; case 4:filename=”5。bmp";break; case 5:filename="6。bmp”;break; case 6:filename=”7.bmp”;break; case 7:filename="8。bmp”;break; case 8:filename=”9.bmp”;break; case 9:filename="10.bmp”;break; } masknumber。LoadFromFile(filename); //加载图像 if(!masknumber。m_bLoaded) //判断是否加载图像成功 { AfxMessageBox("匹配加载模板失败”); return;} int nw2=masknumber。GetDIBWidth(); int nh2=masknumber.GetDIBHeight(); BYTE * maskptemp=(BYTE *) new BYTE[nw2*nh2]; /*****************************************************/ double p[256]; int throld=200,thrnew=180,m1=0,m2=0;//匹配时用180 for(i=0;i〈256;i++) p[i]=0; for(j=0;j〈nh2;j++) for(i=0;i<nw2;i++) { p[masknumber。m_pdata[j*nw2+i]]++; //统计各像素总数 } for(i=0;i<256;i++) { p[i]=p[i]*1。0/(nw2*nh2); //直方图归一化 } do {throld=thrnew; for(i=0;i〈=throld;i++) { m1=m1+p[i]*i; } for(i=throld+1;i〈256;i++) { m2=m2+p[i]*i; }thrnew=(m1+m2)/2; } while( abs(thrnew=throld)〈5 ); for(j=0;j〈nh2;j++) for(i=0;i<nw2;i++) { //对图像的第j行、第i列的象素的灰度信息进行判断,修改 if(masknumber.m_pdata[j*nw2+i]〉thrnew) maskptemp[j*nw2+i]=255; else maskptemp[j*nw2+i]=0; } memcpy(masknumber。m_pdata,maskptemp,nw2*nh2); masknumber.UpdateData(); Invalidate(); delete[] maskptemp; /****************************************************/ int count; int flag=0; for(h=0;h<31;h++) for(k=0;k〈5;k++) { count=0; for(j=0;j<20;j++) for(i=0;i〈16;i++) { if(masknumber。m_pdata[j*nw2+i]==cutmask.m_pdata[(j+h)*nw+i+k]) count++; } if((count*1.0/(nw2*nh2))>nuberthr) { cardnumber=t; flag=1; break; } } if(flag==1)break; } //检测花型 int cardtype; /******************************************************************************************/ double type[4]; for(t=0;t<4;t++) { switch(t) {case 0:filename="111.bmp”;break; case 1:filename="222.bmp”;break; case 2:filename=”333。bmp";break; case 3:filename="444。bmp”;break; } masktype。LoadFromFile(filename); //加载图像 if(!masktype。m_bLoaded) //判断是否加载图像成功 { AfxMessageBox("匹配加载模板失败"); return; } int nw3=masktype.GetDIBWidth(); int nh3=masktype.GetDIBHeight(); BYTE * typeptemp=(BYTE *) new BYTE[nw3*nh3]; /*****************************************************/ double p[256]; int throld=200,thrnew=180,m1=0,m2=0;//匹配时用180 for(i=0;i<256;i++) p[i]=0; for(j=0;j<nh3;j++) for(i=0;i<nw3;i++) { p[masktype.m_pdata[j*nw3+i]]++; //统计各像素总数 } for(i=0;i〈256;i++) { p[i]=p[i]*1.0/(nw3*nh3); //直方图归一化 } do {throld=thrnew; for(i=0;i〈=throld;i++) { m1=m1+p[i]*i; } for(i=throld+1;i〈256;i++) { m2=m2+p[i]*i; } thrnew=(m1+m2)/2;} while( abs(thrnew=throld)<5 ); for(j=0;j〈nh3;j++) for(i=0;i〈nw3;i++) { //对图像的第j行、第i列的象素的灰度信息进行判断,修改 if(masktype.m_pdata[j*nw3+i]〉thrnew) typeptemp[j*nw3+i]=255; else typeptemp[j*nw3+i]=0; } memcpy(masktype。m_pdata,typeptemp,nw3*nh3); masktype.UpdateData(); Invalidate(); delete[] typeptemp; int count; double cmp[5][35]; for(h=0;h<35;h++) for(k=0;k<5;k++) {count=0; for(j=0;j〈16;j++) for(i=0;i〈16;i++) { if(masktype。m_pdata[j*nw3+i]==cutmask.m_pdata[(j+h)*nw+i+k]) count++; } cmp[k][h]=count; } type[t]=cmp[0][0]; for(h=0;h〈35;h++) for(k=0;k〈5;k++) { if(cmp[k][h]>type[t])type[t]=cmp[k][h]; } } cardtype=0; double tmepp=type[0]; for(i=0;i〈4;i++) if(type[i]〉tmepp) { tmepp=type[i]; cardtype=i; } //检测结果显示 略 } 结果为: 四、实验分析与总结 由于图片的位置可能是斜的,所以需要对图片进行旋转; 可以再以个函数内调用多个以上函数依次完成上面操作。 测量距离的方法为在水平与竖直均匀分布的7个位置上测量,由于噪声所以需要进行中值滤波。 五、心得体会 由于编程上的问题,编译连接时老实错误,有的图片由于运行是程序出现不明错误而为能读取。在测量上由于只用了7个点所以有时会有较大误差,此时可再图片预处理上多进行几步操作,而不能一键检测。 在匹配上由于用了图片相减的方法,误差较大,对于数只可以准确检测出来,但由于花型,过小导致误差较大,有时不能检测出来,需要改进。 精彩文档- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字图像 处理 纸牌 识别 课程设计
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【w****g】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【w****g】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【w****g】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【w****g】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文