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

网站子页设计坪山网站开发

网站子页设计,坪山网站开发,科技 网站 推荐,百家号如何给网站做推广文章目录 1、功能描述2、图像矩3、代码实现4、效果展示5、完整代码6、涉及到的库函数cv2.moments 7、参考 1、功能描述 计算图像的矩#xff0c;以质心为例 2、图像矩 什么叫图像的矩#xff0c;在数字图像处理中有什么作用#xff1f; - 谢博琛的回答 - 知乎 https://ww… 文章目录 1、功能描述2、图像矩3、代码实现4、效果展示5、完整代码6、涉及到的库函数cv2.moments 7、参考 1、功能描述 计算图像的矩以质心为例 2、图像矩 什么叫图像的矩在数字图像处理中有什么作用 - 谢博琛的回答 - 知乎 https://www.zhihu.com/question/26803016/answer/888699124 0 阶矩 m 00 m_{00} m00​目标区域的面积Area 1 阶矩 m 01 , m 10 m_{01}, m_{10} m01​,m10​目标区域的质心Centroid 2 阶矩 m 02 , m 20 , m 11 m_{02}, m_{20}, m_{11} m02​,m20​,m11​即惯性矩可计算目标图像的方向 3 阶矩 m 03 , m 30 , m 12 , m 21 m_{03}, m_{30}, m_{12}, m_{21} m03​,m30​,m12​,m21​目标区域的方位和斜度反应目标的扭曲 Hu 矩目标区域往往伴随着空间变换平移尺度旋转所以需要在普通矩的基础上构造出具备不变性的矩组 中心矩构造平移不变性 一文弄懂图像的矩和相关应用 矩是统计学的一个概念pencv中的图像矩空间矩中心矩归一化中心矩Hu矩 图像矩(Image moments)是指图像的某些特定像素灰度的加权平均值矩或者是图像具有类似功能或意义的属性。 图像矩通常用来描述分割后的图像对象。可以通过图像的矩来获得图像的部分性质包括面积(或总体亮度)以及有关几何中心和方向的信息 。 例如工业缺陷检测中实操教程使用计算机视觉算法检测钢板中的焊接缺陷使用图像矩测量缺陷严重性 3、代码实现 导入必要的库函数固定随机种子以保证绘制出来的图片色彩固定随机 from __future__ import print_function from __future__ import division import cv2 as cv import numpy as np import argparse import random as rngrng.seed(12345)读取图片为空打印 could not open or find xxx parser argparse.ArgumentParser(descriptionCode for Image Moments tutorial.)parser.add_argument(--input, helpPath to input image., default1.jpg)args parser.parse_args()src cv.imread(cv.samples.findFile(args.input))if src is None:print(Could not open or find the image:, args.input)exit(0)图片转化为灰度图做模糊处理并在窗口中显示 # Convert image to gray and blur itsrc_gray cv.cvtColor(src, cv.COLOR_BGR2GRAY)src_gray cv.blur(src_gray, (3, 3))source_window Sourcecv.namedWindow(source_window)cv.imshow(source_window, src)调用 canny 算子边缘检测找出图片中需要计算矩的轮廓 把 canny 算子的 threshold 设置为滑动条的形式进行回调默认为 100 max_thresh 255thresh 100 # initial thresholdcv.createTrackbar(Canny Thresh:, source_window, thresh, max_thresh, thresh_callback)thresh_callback(thresh)cv.waitKey()看看核心函数 thresh_callback 计算 canny 边缘检测调用找轮廓函数获取所有边缘轮廓 def thresh_callback(val):threshold valcanny_output cv.Canny(src_gray, threshold, threshold * 2)contours, _ cv.findContours(canny_output, cv.RETR_TREE, cv.CHAIN_APPROX_SIMPLE)计算每个轮廓的矩 # Get the momentsmu [None] * len(contours)for i in range(len(contours)):mu[i] cv.moments(contours[i])计算每个轮廓的质心图片中所有像素点的横坐标除以图片的像素点个数面积结果为质心的横坐标 同理可以计算出质心的纵坐标 # Get the mass centersmc [None] * len(contours)for i in range(len(contours)):# add 1e-5 to avoid division by zero# print(mu[i][m00], mu[i][m10], mu[i][m01])mc[i] (mu[i][m10] / (mu[i][m00] 1e-5), mu[i][m01] / (mu[i][m00] 1e-5))看看计算出来的矩的所有信息 mu[0]output {m00: 1.0, m10: 668.0, m01: 876.3333333333333, m20: 446224.1666666666, m11: 585390.6666666666, m02: 767960.1666666666, m30: 298077966.0, m21: 391041111.3666667, m12: 512997391.3333333, m03: 672989190.1, mu20: 0.16666666662786156, mu11: 0.0, mu02: 0.055555555620230734, mu30: 5.960464477539063e-08, mu21: -0.022222160400502844, mu12: 9.778887033462524e-09, mu03: 0.007407426834106445, nu20: 0.16666666662786156, nu11: 0.0, nu02: 0.055555555620230734, nu30: 5.960464477539063e-08, nu21: -0.022222160400502844, nu12: 9.778887033462524e-09, nu03: 0.007407426834106445}绘制轮廓绘制每个轮廓的质心保存结果 # Draw contoursdrawing np.zeros((canny_output.shape[0], canny_output.shape[1], 3), dtypenp.uint8)for i in range(len(contours)):color (rng.randint(0, 256), rng.randint(0, 256), rng.randint(0, 256))cv.drawContours(drawing, contours, i, color, 2)cv.circle(drawing, (int(mc[i][0]), int(mc[i][1])), 4, color, -1)cv.imshow(Contours, drawing)cv.imwrite(result.jpg, drawing)对比下我们通过图片矩计算出来的面积和直接调用 opencv 接口的轮廓面积 # Calculate the area with the moments 00 and compare with the result of the OpenCV functionfor i in range(len(contours)):print( * Contour[%d] - Area (M_00) %.2f - Area OpenCV: %.2f - Length: %.2f % (i, mu[i][m00], cv.contourArea(contours[i]), cv.arcLength(contours[i], True)))output * Contour[0] - Area (M_00) 1.00 - Area OpenCV: 1.00 - Length: 17.66* Contour[1] - Area (M_00) 0.00 - Area OpenCV: 0.00 - Length: 426.14* Contour[2] - Area (M_00) 1.50 - Area OpenCV: 1.50 - Length: 67.90......* Contour[539] - Area (M_00) 92.00 - Area OpenCV: 92.00 - Length: 541.41* Contour[540] - Area (M_00) 21.50 - Area OpenCV: 21.50 - Length: 84.47* Contour[541] - Area (M_00) 81.50 - Area OpenCV: 81.50 - Length: 289.49* Contour[542] - Area (M_00) 61.00 - Area OpenCV: 61.00 - Length: 452.42可以看到结果是一致的 4、效果展示 输入图片 threshold 10 threshold 60 threshold 112 threshold 163 threshold 214 只绘制矩不绘制轮廓 egthreshold 125 输入图片 threshold 64 输入图片 threshold 64 输入图片 threshold 64 输入图片 threshold 64 输入图片 threshold 64 输入图片 threshold 64 5、完整代码 from __future__ import print_function from __future__ import division import cv2 as cv import numpy as np import argparse import random as rngrng.seed(12345)def thresh_callback(val):threshold valcanny_output cv.Canny(src_gray, threshold, threshold * 2)contours, _ cv.findContours(canny_output, cv.RETR_TREE, cv.CHAIN_APPROX_SIMPLE)# Get the momentsmu [None] * len(contours)for i in range(len(contours)):mu[i] cv.moments(contours[i])# Get the mass centersmc [None] * len(contours)for i in range(len(contours)):# add 1e-5 to avoid division by zero# print(mu[i][m00], mu[i][m10], mu[i][m01])mc[i] (mu[i][m10] / (mu[i][m00] 1e-5), mu[i][m01] / (mu[i][m00] 1e-5))# Draw contoursdrawing np.zeros((canny_output.shape[0], canny_output.shape[1], 3), dtypenp.uint8)for i in range(len(contours)):color (rng.randint(0, 256), rng.randint(0, 256), rng.randint(0, 256))cv.drawContours(drawing, contours, i, color, 2)cv.circle(drawing, (int(mc[i][0]), int(mc[i][1])), 4, color, -1)cv.imshow(Contours, drawing)cv.imwrite(result.jpg, drawing)# Calculate the area with the moments 00 and compare with the result of the OpenCV functionfor i in range(len(contours)):print( * Contour[%d] - Area (M_00) %.2f - Area OpenCV: %.2f - Length: %.2f % (i, mu[i][m00], cv.contourArea(contours[i]), cv.arcLength(contours[i], True)))if __name__ __main__:parser argparse.ArgumentParser(descriptionCode for Image Moments tutorial.)parser.add_argument(--input, helpPath to input image., default1.jpg)args parser.parse_args()src cv.imread(cv.samples.findFile(args.input))if src is None:print(Could not open or find the image:, args.input)exit(0)# Convert image to gray and blur itsrc_gray cv.cvtColor(src, cv.COLOR_BGR2GRAY)src_gray cv.blur(src_gray, (3, 3))source_window Sourcecv.namedWindow(source_window)cv.imshow(source_window, src)max_thresh 255thresh 100 # initial thresholdcv.createTrackbar(Canny Thresh:, source_window, thresh, max_thresh, thresh_callback)thresh_callback(thresh)cv.waitKey()6、涉及到的库函数 cv2.moments cv2.moments 是 OpenCV 库中的一个函数用于计算图像轮廓的矩。 一、函数原型 retval cv2.moments(array[, binaryImage])二、参数说明 array表示轮廓的数组可以是点集、灰度图像或二值图像。当 array 是点集时函数会将这些点集当成轮廓中的顶点把整个点集作为一条轮廓来处理而不是将它们当成独立的点来看待。 binaryImage可选参数布尔值。当该参数为 True 时array 内所有的非零值都被处理为 1。 三、返回值 retval一个字典对象包含了轮廓的各种矩信息。这些矩可以用于进一步分析如计算轮廓的重心、长宽比、旋转角度等。 四、矩的类型和含义 零阶矩m00表示轮廓的面积。这是一个比较直观的含义可以通过 M[“m00”] 来访问。一阶矩m10, m01与轮廓的质心位置有关。其中m10 表示关于 x 轴的亮度加权平均值即质心的 x 坐标m01 表示关于 y 轴的亮度加权平均值即质心的 y 坐标。二阶矩及更高阶矩提供了关于图像形状相对于其中心的分布信息以及更复杂的形状特征。 五、使用示例 import cv2 import numpy as np# 读取图像 img cv2.imread(image.jpg)# 转换为灰度图像并二值化 gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) ret, binary cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)# 查找轮廓 contours, _ cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)# 计算每个轮廓的矩 for contour in contours:M cv2.moments(contour)print(轮廓的矩:, M)print(轮廓的面积:, M[m00])六、注意事项 在使用 cv2.moments 函数之前需要确保已经正确读取了图像并找到了轮廓。返回值是一个字典对象可以通过键来访问不同类型的矩值。矩值可以用于后续的形状分析和特征提取任务中。 综上所述cv2.moments 函数是 OpenCV 库中用于计算图像轮廓矩的重要工具它提供了关于图像形状的重要信息并广泛应用于形状分析、特征提取和形状识别等任务中。 7、参考 https://docs.opencv.org/5.x/d0/d49/tutorial_moments.html
http://www.hkea.cn/news/14585303/

相关文章:

  • 帝国建设网站网页设计尺寸多少比较好
  • 西宁网站建设有限公司校园网认证登录入口
  • 织梦的网站数据还原怎么做小程序代理加盟前景
  • 东莞做微网站清远网站建设
  • 网站建设招聘做网站投注代理犯罪吗
  • 汉中网站建设网页开发背景
  • 网站制作论文优帮云网站平台做推广方案
  • 做网站可以用php吗苏州网站建设问问q778925409强涵
  • 网站建设合同需要缴纳印花税青岛专业网站制作
  • wordpress修改固定链接打不开福州seo服务
  • 什么是网站空间信息网站单个页面301重定向到新网站
  • 博客网站模版面包屑导航的网站
  • 长沙百度网站推广优化WordPress前台用户发布
  • 做网站自己买域名自媒体怎么申请注册
  • 凯里信息网站美食网站的设计与实现
  • 网站设计的含义例点估算网站开发项目工作量
  • 江门网站快速排名优化德州宁津建设局网站
  • 图片背景在网站建设中wordpress图片上传压缩
  • 临沧市住房和城乡建设网站做书评的网站有哪些
  • 网站建设论文伯乐在线贸易公司 网站 扶持
  • wordpress建站 云打印网页界面设计分析案例
  • 无锡网站seo外包网页设计动画网站
  • 北京营销型网站建设seo优化的主要内容
  • 正邦 网站建设企业营销型网站seo推广
  • 做外贸仿牌都用哪些网站网站怎么做才会有收录
  • 贵阳专业网站制作wordpress后台管理
  • 网站内容建设和管理系统药企做网站需要哪些手续
  • 中国建设银行 云南 网站首页管理类网站开发价格
  • 稳定的网络建站咨询电话三亚网站制
  • 网站白名单 是什么如何制作自己的作品集