16岁做分期网站,广告查查,安阳淘宝网站建设,wordpress图片文件夹1.图像腐蚀原理 腐蚀操作的原理是将一个结构元素#xff08;也称为核或模板#xff09;在图像上滑动#xff0c;并将其与图像中对应位置的像素进行比较。如果结构元素的所有像素与图像中对应位置的像素都匹配#xff0c;那么该位置的像素值保持不变。如果结构元素的任何一个…
1.图像腐蚀原理 腐蚀操作的原理是将一个结构元素也称为核或模板在图像上滑动并将其与图像中对应位置的像素进行比较。如果结构元素的所有像素与图像中对应位置的像素都匹配那么该位置的像素值保持不变。如果结构元素的任何一个像素与图像中对应位置的像素不匹配那么该位置的像素值被置为0或其他指定的像素值从而改变了图像的形状和结构。 2.图像腐蚀目的
去除图像中微小物体分离较近的两个物体
3.结构元素生成函数getStructuringElement( Mat cv::getStructuringElement ( int shape Size ksize, Point anchor point(-1,-1) shape:结构元素的种类。ksize:结构元素的尺寸大小。anchor:中心点的位置默认参数为结构元素的几何中心点。
其中结构元素的类型参数 4.图像腐蚀操作函数erode() void cv::erode ( InputArray src, OutputArray dst, InputArray kernel, Point anchor Point(-1,-1), int iterations 1, int cborderType BORDER CONSTANT const Scalar borderValue morphologyDefaultBorderValue() ) src:输入的待腐蚀图像图像的通道数可以是任意的但是图像的数据类型必须是CV_8UCV _16UCV_16SCV_32F或CV_64F之一。dst:腐蚀后的输出图像与输入图像src具有相同的尺寸和数据类型。kermel:用于腐蚀操作的结构元素可以自己输入也可以用getStructuringElement0)函数生成。anchor:中心点在结构元素中的位置默认参数为结构元素的几何中心点。iterations:腐蚀的次数。borderType:像素外推法选择标志。borderValue:边界不变的边界值。
5.示例代码
//绘制包含区域函数
void drawState(Mat image, int number, Mat centroids, Mat stats, String string) {RNG rng(10086);vectorVec4b colors;for(int i0;inumber;i){//使用均匀分布的随机数确定颜色Vec4b vec4Vec4b(rng.uniform(0,256),rng.uniform(0,256),rng.uniform(0,256),rng.uniform(0,256));colors.push_back(vec4);}//以不同颜色标记出不同的连通域for(int i1;inumber;i){//中心位置int center_xcentroids.atdouble(i,0);int center_ycentroids.atdouble(i,1);//矩形边框int xstats.atint(i,CC_STAT_LEFT);int ystats.atint(i,CC_STAT_TOP);int wstats.atint(i,CC_STAT_WIDTH);int hstats.atint(i,CC_STAT_HEIGHT);int areastats.atint(i,CC_STAT_AREA);//中心位置绘制circle(image,Point(center_x,center_y),2,Scalar(0,255,0),2,8,0);//外接矩形Rect rect(x,y,w,h);rectangle(image,rect,colors[i],1,8,0);putText(image, format(%d,i),Point(center_x,center_y),FONT_HERSHEY_SIMPLEX,0.5,Scalar(255,0,255),1);}imwrite(/sdcard/DCIM/string.png,image);
}void Image_corrosion(Mat image){Mat img2;copyTo(image,img2,image);//克隆一个单独的图像用于后期图像绘制Mat rice,riceBW;//将图像转成二值图像用于统计连通域cvtColor(image,rice,COLOR_BGR2GRAY);threshold(rice,riceBW,50,255,THRESH_BINARY);Mat out,stats,centroids;//统计图像中连通域的个数int number connectedComponentsWithStats(riceBW,out,stats,centroids,8,CV_16U);drawState(image,number,centroids,stats,Uncorroded_connected);//绘制图像Mat strucr1 getStructuringElement(0,Size(3,3));//矩形结构元素//Mat strucr1 getStructuringElement(1,Size(3,3));//十字结构元素erode(riceBW,riceBW,strucr1);//对图像进行腐蚀number connectedComponentsWithStats(riceBW,out,stats,centroids,8,CV_16U);drawState(img2,number,centroids,stats,corroded_connected);
}