/* 程序名:Cjbsb.c 功能:读入图像文件,甄别图像的角标 */ #include #include #include #include extern IplImage* src; IplImage* Cjbsb(IplImage* img, IplImage* imgjbsb, int jbwhite, int jbblack) { /*定义变量*/ int i, j, jbi = 0, jbj = 0; int height, width, step, channels; uchar *data; int brklab = 0; /* 获取图像信息*/ height = img->height; width = img->width; step = img->widthStep; channels = img->nChannels; data = (uchar *)img->imageData; // IplImage* imgjbsb = cvCreateImage(cvGetSize(img),img->depth,img->nChannels); cvCopy(img, imgjbsb, NULL); uchar *imgjbsbdata = (uchar *)imgjbsb->imageData; //以角标为起点进行裁剪与画框 CvSize jbcjsize = cvSize(835, 165); //角标裁剪框的大小,宽为835象素,高为165象素 IplImage* imgjbcj = cvCreateImage(jbcjsize, img->depth, img->nChannels); uchar *imgjbcjdata = (uchar *)imgjbcj->imageData; int jbcjstep = imgjbcj->widthStep; int jbcjchannels = imgjbcj->nChannels; for (i = 0; i<165; i++) for (j = 0; j<835; j++) imgjbcjdata[i*jbcjstep + j*jbcjchannels] = data[(i + jbi)*step + (j + jbj)*channels]; for (i = 0; i<165; i = i + 2) { imgjbsbdata[(i + jbi)*step + jbj*channels] = 0; imgjbsbdata[(i + jbi)*step + (jbj + 835)*channels] = 0; } for (j = 0; j<835; j = j + 2) { imgjbsbdata[jbi*step + (j + jbj)*channels] = 0; imgjbsbdata[(jbi + 165)*step + (j + jbj)*channels] = 0; } return imgjbcj; }