#include 'cv.h '
#include 'highgui.h '
#包含
#包含
//#include 'otsu.h '
intmain(intargc,char** argv ) ) ) ) ) ) ) )。
{
IplImage *src、*gray、*bw、*dst;
cvmemstorage * storage=cvcreatememstorage (0;
CvSeq* contour=0;
char* filename=argc==2? argv[1]:'5.jpg ';
if (! filename )
printf(can ) topenthefile:%d(n ),filename );
src=cv loadimage (d :\ xsz\ debug\图片\3.jpg ',1 );
cvnamedwindow('image ',1 );
CVShowimage(image )、src;
gray=cvcreateimage (cv size (src-width,src-height ),src-depth,1 );
cvcvtcolor(src,gray,CV_BGR2GRAY );
int hei,wid;
hei=gray-height; //请注意这里是灰色的。 在otsu上使用hei,wid是在otsu.h上全局定义的;
wid=gray-width;
printf (图像高度为(d,宽度为) d(n ) n )、hei、wid );
cvnamedwindow('image2 ',1 );
CVShowimage(image2 )、gray );
bw=cvcreateimage(cvgetsize(src ),IPL_DEPTH_8U,1 );
cvThreshold(gray,bw,128,255,CV_THRESH_BINARY_INV );
cvnamedwindow('image4',1 );
CVShowimage(image4)、bw;
//WB=cvcloneimage(bw;
//cvnot(bw,wb ); 仅当目标区域为黑色背景时,翻转该区域。
DST=cvcloneimage(src;
cvfindcontours(bw,storage,contour,sizeof ) contour )、CV_RETR_TREE、CV_CHAIN_APPROX_SIMPLE;
for (; contour=0; contour=contour-h_next )
{ cv box 2d rect=cvminarearect2(contour,storage );
CvPoint2D32f rect_pts0[4];
cvboxpoints(rect,rect_pts0);
cvPolyLine的点集输入类型为CvPoint**
//因此将CvPoint2D32f型的rect_pts0转换为CvPoint型的rect_pts
//给出相应的指针*pt
int npts=4,k=0;
int aaa=0,bbb=0;
CvPoint rect_pts[4],*pt=rect_pts;
printf (连通区域的最小外接矩形顶点坐标分别为:(n );
for(intI=0; i4; I )
{
rect _ pts [ I ]=cvpointfrom 32f (rect _ pts0[ I ];
printf(%d%d(n ),rect_pts[i].x,rect_pts[i].y );
AAA=(int ) sqrt ) ) pow ) rect_pts[0].x-rect_pts[1].x ),2 ) pow ) rect_pts[0].y-rect_pts
bbb=(int ) sqrt ) ) pow ) rect_pts[0].x-rect_pts[3].x ),2 ) pow ) rect_pts[0].y-rect_pts
AAA
{
k=aaa;
aaa=bbb;
bbb=k;
}
}
printf ('最小外接矩形的长度为%d,宽度为%d。 nn ',aaa,bbb;
//Chang=rect _ pts [0]-rect _ pts [3];
//kuan=rect_pts[0]-rect_pts[1];
//printf (最小外接矩形的长度为(d,宽度为) d(n )、chang、kuan );
//画盒子
cvpolyline(dst,pt,npts,1,1,cv_RGB ) 255,0,0 ),1 );
}
cvnamedwindow('image5',1 );
CVShowimage(image5)、dst;
cvwaitkey(0; //注意这句话的放置位置,如果放错了的话。
cvdestroywindow('image );
vdestroywindow(image2 );
vdestroywindow(image4);
vdestroywindow(image5);
cvreleaseimage(src );
cvreleaseimage(gray;
cvreleaseimage(bw;
cvreleaseimage(dst;
返回0;
}