图像分割(阈值分割和区域生长)vc++代码.doc_第1页
图像分割(阈值分割和区域生长)vc++代码.doc_第2页
图像分割(阈值分割和区域生长)vc++代码.doc_第3页
图像分割(阈值分割和区域生长)vc++代码.doc_第4页
图像分割(阈值分割和区域生长)vc++代码.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验6 图像分割1、 阈值分割法实验代码及结果:#include cv.h#include highgui.h#include stdio.h#include stdlib.h#include int main( int argc, char* argv ) IplImage* pImg=0; /声明IplImage指针int height,width,step,channels;uchar *data;int i,j; /载入图像pImg = cvLoadImage(2.jpg,0);if( !pImg ) printf(Image was not loaded.n); return -1; /获取图像信息height=pImg-height;width=pImg-width;step=pImg-widthStep;channels=pImg-nChannels;data=(uchar *)pImg-imageData;printf(Processing a %d*%d with %d channelsn,height,width,channels);int MaxP=0;float t,T,m=0,n=0;float w0,w1,u0,u1,u;double q2=0,temp=0; cvNamedWindow( win1, 1);/创建窗口 cvShowImage( win1, pImg );/显示图像 /计算最大灰度值MaxPfor(i=0;iheight;i+)for(j=0;jMaxP)MaxP=datai*step+j;printf(最大灰度值:%dn,MaxP);/计算最大方差时的阈值t for(T=0;TMaxP;T+) w0=0,w1=0,u0=0,u1=0,u=0,q2=0,m=0,n=0; for(i=0;iheight;i+)for(j=0;jwidth;j+)if(datai*width+jtemp)t=T;temp=q2; printf(最佳阈值:%lfn,t);for(i=0;iheight;i+)for(j=0;jwidth;j+)if(datai*width+jfront=0; q-rear=0; q-tag=0; return q; int EnQu(struct queue *q,int x) if(q-rear=q-front & q-tag=1)/表示队列已满 return 0; else q-quq-rear=x; q-rear=(q-rear+1); /尾指针向后走一步 if(q-rear=q-front) /若有元素入队以后出现q-rear=q-front,则表示队列满 q-tag=1; return 1; int DeQu(struct queue *q) if(q-rear=q-front & q-tag=0)/表示队空 return 0; else q-quq-front=0;/将队头元素的值赋值为0 q-front=(q-front+1);/头指针向后走一步 if(q-rear=q-front)/若有元素出队以后出现q-rear=q-front,则表示队列空 q-tag=0; return 1; int main( int argc, char* argv ) IplImage* pImg; /声明IplImage指针int height,width,step,channels;uchar *data;int i,j; struct queue *q,*p; /分别存放X Y坐标 q=InitQu(); p=InitQu(); /载入图像pImg = cvLoadImage(1.jpg,0);if( !pImg ) printf(Image was not loaded.n); return -1; /获取图像信息height=pImg-height;width=pImg-width;step=pImg-widthStep;channels=pImg-nChannels;data=(uchar *)pImg-imageData;/printf(%d n%d,width,step);/创建一张与原图大小一样的全黑的图像,用于显示生长范围int depth=pImg-depth;IplImage* pImg2=cvCreateImage(cvSize(width,height),depth,channels);pImg2-origin=0;cvZero(pImg2);uchar * data2=(uchar *)pImg2-imageData; cvNamedWindow( win1, 1);/创建窗口cvShowImage( win1, pImg );/显示图像 EnQu(q,height/2); EnQu(p,width/2);while(q-frontrear)i=q-quq-front;j=p-qup-front;if(abs(data(i-1)*step+j-datai*step+j)0)&(i-10)&(jwidth) data2(i-1)*step+j=255; EnQu(q,i-1); EnQu(p,j); if(abs(data(i+1)*step+j-datai*step+j)0)&(i+10)&(jwidth) data2(i+1)*step+j=255; EnQu(q,i+1); EnQu(p,j); if(abs(datai*step+j+1-datai*step+j)0)&(i0)&(j+1width) data2i*step+j+1=255; EnQu(q,i); EnQu(p,j+1);if(abs(datai*step+j-1-datai*step+j)0)&(i0)&(j-1front=(q-front+1); p-front=(p-front+1);/显示生长范围cvNamedWindow(win2, 1); cvShowIm

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论