当前位置: 首页 > news >正文

西城做网站公司怎么写简历 网站开发

西城做网站公司,怎么写简历 网站开发,医院网站建设步骤,建设网站需要的硬件设备Opencv 中 watershed函数原型#xff1a; void watershed( InputArray image, InputOutputArray markers ); 第一个参数 image#xff0c;必须是一个8bit 3通道彩色图像矩阵序列#xff0c;第一个参数没什么要说的。关键是第二个参数 markers#xff0c;Opencv官方文档的说…Opencv 中 watershed函数原型 void watershed( InputArray image, InputOutputArray markers ); 第一个参数 image必须是一个8bit 3通道彩色图像矩阵序列第一个参数没什么要说的。关键是第二个参数 markersOpencv官方文档的说明如下 Before passing the image to the function, you have to roughly outline the desired regions in the image markers with positive (0) indices. So, every region is represented as one or more connected components with the pixel values 1, 2, 3, and so on. Such markers can be retrieved from a binary mask using findContours() and drawContours(). The markers are “seeds” of the future image regions. All the other pixels in markers , whose relation to the outlined regions is not known and should be defined by the algorithm, should be set to 0’s. In the function output, each pixel in markers is set to a value of the “seed” components or to -1 at boundaries between the regions. 就不一句一句翻译了大意说的是在执行分水岭函数watershed之前必须对第二个参数markers进行处理它应该包含不同区域的轮廓每个轮廓有一个自己唯一的编号轮廓的定位可以通过Opencv中findContours方法实现这个是执行分水岭之前的要求。 接下来执行分水岭会发生什么呢算法会根据markers传入的轮廓作为种子也就是所谓的注水点对图像上其他的像素点根据分水岭算法规则进行判断并对每个像素点的区域归属进行划定直到处理完图像上所有像素点。而区域与区域之间的分界处的值被置为“-1”以做区分。 简单概括一下就是说第二个入参markers必须包含了种子点信息。Opencv官方例程中使用鼠标划线标记其实就是在定义种子只不过需要手动操作而使用findContours可以自动标记种子点。而分水岭方法完成之后并不会直接生成分割后的图像还需要进一步的显示处理如此看来只有两个参数的watershed其实并不简单。 下边通过图示来看一下watershed函数的第二个参数markers在算法执行前后发生了什么变化。对于一个原图 经过灰度化、滤波、Canny边缘检测、findContours轮廓查找、轮廓绘制等步骤后终于得到了符合Opencv要求的merkers我们把merkers转换成8bit单通道灰度图看看它里边到底是什么内容 这个是分水岭运算前的merkers 这个是findContours检测到的轮廓 看效果基本上跟图像的轮廓是一样的也是简单的勾勒出了物体的外形。但如果仔细观察就能发现图像上不同线条的灰度值是不同的底部略暗越往上灰度越高。由于这幅图像边缘比较少对比不是很明显. 从图像底部往上线条的灰度值是越来越高的并且merkers图像底部部分线条的灰度值由于太低已经观察不到了。相互连接在一起的线条灰度值是一样的这些线条和不同的灰度值又能说明什么呢 答案是每一个线条代表了一个种子线条的不同灰度值其实代表了对不同注水种子的编号有多少不同灰度值的线条就有多少个种子图像最后分割后就有多少个区域。 再来看一下执行完分水岭方法之后merkers里边的内容发生了什么变化 可以看到执行完watershed之后merkers里边被分割出来的区域已经非常明显了空间上临近并且灰度值上相近的区域被划分为一个区域灰度值是一样不同区域间被划分开这其实就是分水岭对图像的分割效果了。 总的概括一下watershed图像自动分割的实现步骤 1. 图像灰度化、滤波、Canny边缘检测 2. 查找轮廓并且把轮廓信息按照不同的编号绘制到watershed的第二个入参merkers上相当于标记注水点。 3. watershed分水岭运算 4. 绘制分割出来的区域视觉控还可以使用随机颜色填充或者跟原始图像融合以下以得到更好的显示效果。 以下是Opencv分水岭算法watershed实现的完整过程 #include opencv2/imgproc/imgproc.hpp #include opencv2/highgui/highgui.hpp#include iostreamusing namespace cv; using namespace std;Vec3b RandomColor(int value); //生成随机颜色函数int main( int argc, char* argv[] ) {Mat imageimread(argv[1]); //载入RGB彩色图像imshow(Source Image,image);//灰度化滤波Canny边缘检测Mat imageGray;cvtColor(image,imageGray,CV_RGB2GRAY);//灰度转换GaussianBlur(imageGray,imageGray,Size(5,5),2); //高斯滤波imshow(Gray Image,imageGray); Canny(imageGray,imageGray,80,150); imshow(Canny Image,imageGray);//查找轮廓vectorvectorPoint contours; vectorVec4i hierarchy; findContours(imageGray,contours,hierarchy,RETR_TREE,CHAIN_APPROX_SIMPLE,Point()); Mat imageContoursMat::zeros(image.size(),CV_8UC1); //轮廓 Mat marks(image.size(),CV_32S); //Opencv分水岭第二个矩阵参数marksScalar::all(0);int index 0;int compCount 0;for( ; index 0; index hierarchy[index][0], compCount ) {//对marks进行标记对不同区域的轮廓进行编号相当于设置注水点有多少轮廓就有多少注水点drawContours(marks, contours, index, Scalar::all(compCount1), 1, 8, hierarchy);drawContours(imageContours,contours,index,Scalar(255),1,8,hierarchy); }//我们来看一下传入的矩阵marks里是什么东西Mat marksShows;convertScaleAbs(marks,marksShows);imshow(marksShow,marksShows);imshow(轮廓,imageContours);watershed(image,marks);//我们再来看一下分水岭算法之后的矩阵marks里是什么东西Mat afterWatershed;convertScaleAbs(marks,afterWatershed);imshow(After Watershed,afterWatershed);//对每一个区域进行颜色填充Mat PerspectiveImageMat::zeros(image.size(),CV_8UC3);for(int i0;imarks.rows;i){for(int j0;jmarks.cols;j){int indexmarks.atint(i,j);if(marks.atint(i,j)-1){PerspectiveImage.atVec3b(i,j)Vec3b(255,255,255);} else{PerspectiveImage.atVec3b(i,j) RandomColor(index);}}}imshow(After ColorFill,PerspectiveImage);//分割并填充颜色的结果跟原始图像融合Mat wshed;addWeighted(image,0.4,PerspectiveImage,0.6,0,wshed);imshow(AddWeighted Image,wshed);waitKey(); }Vec3b RandomColor(int value) span styleline-height: 20.8px; font-family: sans-serif;//生成随机颜色函数/span {valuevalue%255; //生成0~255的随机数RNG rng;int aarng.uniform(0,value);int bbrng.uniform(0,value);int ccrng.uniform(0,value);return Vec3b(aa,bb,cc); } 分割效果
http://www.w-s-a.com/news/776018/

相关文章:

  • 深圳企业网站建设推广服务php做的商城网站设计论文
  • 韩雪冬网站手机网站开发 宽度
  • 奉贤专业做网站新手怎么做企业网站
  • 做网站用哪几个端口 比较好手机号网站源码
  • 手机免费代理ip网站那个旅游网站做攻略最好
  • 西安做网站找哪家公司好苏州专业网站建设开发
  • dedecms如何做网站网站设计实施方案
  • 网站建设合约品牌设计有哪些
  • 织梦企业门户网站宝塔搭建wordpress网站
  • 网站为什么没有排名了11月将现新冠感染高峰
  • 网站开发维护专员岗位职责辽阳企业网站建设
  • 做外国订单有什么网站网站设计论文提纲
  • 商城网站建设报价方案导师让做网站
  • 清远市企业网站seo联系方式动易官方网站
  • 手机上怎么做能打开的网站一级域名和二级域名跨域
  • 网站首页效果图wordpress 在线教育
  • 电商网站开发团队广西桂林商贸旅游技工学校
  • 网站模板文件怎么下载东莞常平镇邮政编码
  • 建网站需要什么wordpress误删的后果
  • wordpress无插件实现网站地图做阿里巴巴网站店铺装修费用
  • 英文互动网站建设南宁住房和城乡建设局网站
  • 威海微网站建设乐清建网站哪家强
  • 网站和app的开发成本saas系统开发教程
  • ps切片工具做网站大气简洁网站
  • 网至普的营销型网站建设wordpress邮箱验证插件下载
  • 找权重高的网站方法张家港早晨网站建设
  • WordPress数据库添加管理员关键词优化举例
  • 河南国基建设集团--官方网站wordpress qode
  • 做农村电子商务的网站有哪些内容静态网站模板古典
  • 导航网站设计方案个人网站推广方法