int process(Mat &src,Mat &mask) { for (int i=0; i<src.rows; i++) { Mat line(src.row(i)); Mat lineMask(mask.row(i)); int left=0,right=0,flag=0; for (int j=0; j<mask.cols; j++) { if (lineMask.at<uchar>(0,j)==255&&flag==0) { flag=1; left=j; } if (lineMask.at<uchar>(0,j)==0&&flag==1) { right=j; break; } } int width=right-left; if (width==0) { continue; } if (width>left) { cout<<"Warning Ovelflow"<<endl; //return 1; } /* for (int j=0; j<min(left,width) ;j++) { line.at<Vec3b>(0, j+left)=line.at<Vec3b>(0,left-j-1); } if (width>left) { for (int j=0; j<=min(right,width-left); j++) { line.at<Vec3b>(0, right-j)=line.at<Vec3b>(0, right+j+1); } } */ for (int j=1; j<=min(right, width); j++) { line.at<Vec3b>(0, right-j)=line.at<Vec3b>(0, right+j); } } return 1; }
void Minitel::noLineMask() { lineMask(LINE_MASK_OFF); }
void Minitel::lineMask() { lineMask(LINE_MASK_ON); }