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

网站制作的公司哪家效果好房地产新闻最新消息2022

网站制作的公司哪家效果好,房地产新闻最新消息2022,羽毛球赛事在哪里看,网页制作工作程序文章目录 基本原理关键函数和参数注意事项 示例代码示例效果代码详解findContours 函数原型findContours函数变体 基本原理 轮廓发现是图像处理中的一个重要步骤#xff0c;用于检测物体的边界和形状。 图像预处理#xff1a; 轮廓发现通常在灰度图像上进行。因此#xff0… 文章目录 基本原理关键函数和参数注意事项 示例代码示例效果代码详解findContours 函数原型findContours函数变体 基本原理 轮廓发现是图像处理中的一个重要步骤用于检测物体的边界和形状。 图像预处理 轮廓发现通常在灰度图像上进行。因此首先将图像转换为灰度图像。接下来应用滤波器来减少噪声。常用的滤波器有高斯模糊Gaussian Blur它有助于平滑图像并减少噪声。 边缘检测 在预处理后的图像上应用边缘检测算法。常用的边缘检测算法是Canny边缘检测器它能有效地检测出图像中的边缘。Canny边缘检测器使用梯度的方向和幅度来找到图像中的边缘。 轮廓提取 一旦得到二值化的边缘图像就可以使用OpenCV的findContours函数来提取轮廓。findContours函数将图像中的每一个边缘视为一个轮廓并返回一个轮廓列表。每个轮廓都由一系列点组成这些点定义了轮廓的形状。 轮廓的层次结构 findContours函数不仅可以返回轮廓还可以返回轮廓的层次结构。这对于包含内嵌轮廓如嵌套在其他轮廓中的孔洞的图像非常有用。层次结构信息存储了每个轮廓的父子关系。 关键函数和参数 cv2.findContours(image, mode, method) image: 输入的二值图像通常是边缘检测的结果。mode: 轮廓检索模式如cv2.RETR_EXTERNAL只检测外轮廓、cv2.RETR_TREE检测所有轮廓并构建层次结构。method: 轮廓逼近方法如cv2.CHAIN_APPROX_SIMPLE只保存轮廓的必要点、cv2.CHAIN_APPROX_NONE保存所有轮廓点。 cv2.drawContours(image, contours, contourIdx, color, thickness) 用于在图像上绘制轮廓。 注意事项 图像的预处理 轮廓发现对输入图像的质量非常敏感。良好的预处理如去噪、对比度增强等可以显著提高轮廓检测的效果。 边缘检测器的选择 边缘检测器的参数如Canny边缘检测器的阈值需要根据图像的特征进行调整。 轮廓的近似和表示 对于复杂的形状可以使用多边形逼近如Douglas-Peucker算法来简化轮廓。 轮廓发现技术广泛应用于对象检测、形状分析、图像分割等领域。在这些应用中轮廓的精确提取和表示对于后续处理和分析至关重要。 示例代码 在OpenCV中使用C进行轮廓发现通常包括以下主要步骤读取图像、灰度化、边缘检测、轮廓发现和绘制轮廓。以下是一个基本的C代码示例展示如何使用OpenCV进行这些操作 #include opencv2/opencv.hpp #include iostreamusing namespace cv; using namespace std;int main() {// 读取图像Mat src imread(image.jpg);if (src.empty()) {cout 无法加载图像 endl;return -1;}// 转换为灰度图像Mat gray;cvtColor(src, gray, COLOR_BGR2GRAY);// 应用高斯模糊以去除噪声Mat blurred;GaussianBlur(gray, blurred, Size(5, 5), 1.5);// 进行Canny边缘检测Mat edges;Canny(blurred, edges, 100, 200);// 发现轮廓vectorvectorPoint contours;vectorVec4i hierarchy;findContours(edges, contours, hierarchy, RETR_TREE, CHAIN_APPROX_SIMPLE);// 在原图上绘制轮廓Mat drawing Mat::zeros(edges.size(), CV_8UC3);for (size_t i 0; i contours.size(); i) {Scalar color Scalar(255, 0, 0); // 轮廓的颜色drawContours(drawing, contours, (int)i, color, 2, 8, hierarchy, 0);}// 显示结果imshow(轮廓, drawing);waitKey(0);return 0; }示例效果 代码详解 读取图像 Mat src imread(image.jpg);使用imread函数加载图像。 灰度化 Mat gray; cvtColor(src, gray, COLOR_BGR2GRAY);使用cvtColor函数将彩色图像转换为灰度图像。 高斯模糊 Mat blurred; GaussianBlur(gray, blurred, Size(5, 5), 1.5);使用GaussianBlur函数对灰度图像进行平滑处理以减少噪声。 Canny边缘检测 Mat edges; Canny(blurred, edges, 100, 200);使用Canny函数进行边缘检测。这里100和200是低和高阈值用于控制边缘的检测。 发现轮廓 vectorvectorPoint contours; vectorVec4i hierarchy; findContours(edges, contours, hierarchy, RETR_TREE, CHAIN_APPROX_SIMPLE);使用findContours函数提取图像中的轮廓。RETR_TREE参数用于获取轮廓的层次结构CHAIN_APPROX_SIMPLE用于压缩水平、垂直和对角直线段只保留它们的终点。 绘制轮廓 Mat drawing Mat::zeros(edges.size(), CV_8UC3); for (size_t i 0; i contours.size(); i) {Scalar color Scalar(255, 0, 0); // 轮廓的颜色drawContours(drawing, contours, (int)i, color, 2, 8, hierarchy, 0); }使用drawContours函数在图像上绘制检测到的轮廓。 显示结果 imshow(轮廓, drawing); waitKey(0);使用imshow函数显示绘制好的图像并使用waitKey等待用户按键。 在实际应用中可以根据具体需求调整模糊参数、Canny边缘检测的阈值以及findContours的模式和方法参数。 findContours 函数原型 OpenCV 中的 findContours 函数用于检测图像中的轮廓。其函数原型如下 void findContours(InputOutputArray image,OutputArrayOfArrays contours,OutputArray hierarchy,int mode,int method,Point offset Point() );参数详解 image: InputOutputArray 输入图像通常为二值化图像如通过边缘检测得到的图像。该图像会被修改因此如果需要保留原图像应该传递其副本。类型通常为 CV_8UC1即单通道8位无符号整数。 contours: OutputArrayOfArrays 检测到的轮廓列表每个轮廓是一个点的向量即 std::vectorPoint。每个点表示轮廓的一部分。具体类型为 std::vectorstd::vectorPoint。 hierarchy: OutputArray 可选的层次结构输出向量。对于每个轮廓hierarchy[i][0] 表示下一个轮廓的索引hierarchy[i][1] 表示前一个轮廓的索引hierarchy[i][2] 表示第一个子轮廓的索引hierarchy[i][3] 表示父轮廓的索引。如果不需要层次结构可以传递 noArray() 或一个空的 Mat。 mode: int 轮廓检索模式决定如何提取轮廓以及如何处理它们之间的关系。可选值有 RETR_EXTERNAL: 只检索最外层的轮廓。RETR_LIST: 检索所有轮廓不建立层次关系。RETR_CCOMP: 检索所有轮廓组织为两级结构顶层是连通分量的外边界次层是孔的边界。RETR_TREE: 检索所有轮廓并重建完整的嵌套轮廓。 method: int 轮廓逼近方法指定如何对轮廓点进行存储。可选值有 CHAIN_APPROX_NONE: 存储所有的轮廓点。CHAIN_APPROX_SIMPLE: 压缩水平、垂直和对角线段只保留这些线段的终点。CHAIN_APPROX_TC89_L1 和 CHAIN_APPROX_TC89_KCOS: 使用 Teh-Chin 链逼近算法。 offset: Point (默认值为 Point()) 偏移量用于所有轮廓点坐标的偏移。这在对图像中的ROI区域进行轮廓检测时尤其有用。 findContours函数变体 它不要求输出层次结构的层次信息。这种简化版的函数原型对于只关心检测到的轮廓而不需要它们之间的层次结构关系的情况是有用的。其具体定义如下 CV_EXPORTS void findContours(InputArray image,OutputArrayOfArrays contours,int mode,int method,Point offset Point() ); 参数详解 image: InputArray 输入图像通常是一个二值图像如通过边缘检测得到的图像。该图像会被修改因此如果需要保留原图像应该传递其副本。类型通常为 CV_8UC1即单通道8位无符号整数。 contours: OutputArrayOfArrays 检测到的轮廓列表每个轮廓是一个点的向量即 std::vectorPoint。每个点表示轮廓的一部分。具体类型为 std::vectorstd::vectorPoint。 mode: int 轮廓检索模式决定如何提取轮廓以及如何处理它们之间的关系。可选值包括 RETR_EXTERNAL: 只检索最外层的轮廓。RETR_LIST: 检索所有轮廓不建立层次关系。RETR_CCOMP: 检索所有轮廓组织为两级结构顶层是连通分量的外边界次层是孔的边界。RETR_TREE: 检索所有轮廓并重建完整的嵌套轮廓。 method: int 轮廓逼近方法指定如何对轮廓点进行存储。可选值包括 CHAIN_APPROX_NONE: 存储所有的轮廓点。CHAIN_APPROX_SIMPLE: 压缩水平、垂直和对角线段只保留这些线段的终点。CHAIN_APPROX_TC89_L1 和 CHAIN_APPROX_TC89_KCOS: 使用 Teh-Chin 链逼近算法。 offset: Point (默认值为 Point()) 偏移量用于所有轮廓点坐标的偏移。这在对图像中的ROI感兴趣区域进行轮廓检测时尤其有用。 使用场景 这个版本的findContours函数适用于简单的轮廓检测任务尤其是当不需要关心轮廓之间的层次关系时。例如在一些形状分析或对象检测的应用中只需要获取所有的轮廓而不关心它们的嵌套关系此时可以使用这个简化的函数原型。
http://www.w-s-a.com/news/773448/

相关文章:

  • 网至普的营销型网站建设wordpress邮箱验证插件下载
  • 找权重高的网站方法张家港早晨网站建设
  • WordPress数据库添加管理员关键词优化举例
  • 河南国基建设集团--官方网站wordpress qode
  • 做农村电子商务的网站有哪些内容静态网站模板古典
  • 导航网站设计方案个人网站推广方法
  • 网站排名易下拉教程防wordpress花园
  • 计算机网站建设 是什么意思现在网站建站的主流语言是什么
  • php网站跟随导航西安百姓网免费发布信息网
  • 濮阳做公司网站html5 特效网站
  • ppt设计器怎么打开深圳seo网络推广营销
  • 建设银行网站用360浏览器建设信用卡中心网站
  • 创建公司网站 教程广州建设局
  • 详述网站建设的过程简答题ui培训设计怎么样
  • 动易网站官网ppt主题大全素材
  • 怎样用eclipse做网站可以做宣传图的网站
  • 哪里可以做游戏视频网站做网站平台应该注意哪些
  • 网站后期推广是谁来做网页制作步骤作答题
  • 全屋装修设计定制整装成都网站优化多少钱
  • html5购物网站模板一个网站两个数据库
  • 个人网站怎么做微信支付网站建设项目介绍
  • 建网站合同网站适配移动端和PC端
  • 网站建设培训机构哪里好html5开发wap网站
  • 免费自助建站源码学而思网校官网
  • 中国最大的网站制作公司青海省高等级公路建设管局网站
  • 建设网站对服务器有什么要求吗wordpress去除更新提示
  • 找个为公司做网站的手机端原神
  • 邯郸手机建站价格公众号开发者权限哪里添加
  • wordpress模板电子书下载站微信app官方免费下载
  • 从哪些方面进行网站建设如何做网站的实时画面