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

网页是怎么做的信阳seo公司

网页是怎么做的,信阳seo公司,betheme做网站怎么样,深圳公租房文章目录 1、功能描述2、代码实现3、效果展示4、更多例子5、参考 1、功能描述 给出一张图片,里面含有各种图形,取各种图形的中心点,从左到右从上到下排序 例如 2、代码实现 import cv2 import numpy as npdef process_img(img):img_gray c…

在这里插入图片描述

文章目录

  • 1、功能描述
  • 2、代码实现
  • 3、效果展示
  • 4、更多例子
  • 5、参考

1、功能描述

在这里插入图片描述

给出一张图片,里面含有各种图形,取各种图形的中心点,从左到右从上到下排序

例如

在这里插入图片描述

2、代码实现

import cv2
import numpy as npdef process_img(img):img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)img_canny = cv2.Canny(img_gray, 100, 100)kernel = np.ones((2, 3))img_dilate = cv2.dilate(img_canny, kernel, iterations=1)img_erode = cv2.erode(img_dilate, kernel, iterations=1)return img_erodedef get_centeroid(cnt):length = len(cnt)sum_x = np.sum(cnt[..., 0])sum_y = np.sum(cnt[..., 1])return int(sum_x / length), int(sum_y / length)def get_centers(img):contours, hierarchies = cv2.findContours(img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)for cnt in contours:if cv2.contourArea(cnt) > 100:yield get_centeroid(cnt)def get_rows(img, centers, row_amt, row_h):centers = np.array(centers)d = row_h / row_amt  # 每行的间距for i in range(row_amt):  # 遍历行数f = centers[:, 1] - d * i  # 行首纵坐标a = centers[(f < d) & (f > 0)]  # 一行内的 xyield a[a.argsort(0)[:, 0]]img = cv2.imread("shape.png")
img_processed = process_img(img)cv2.imwrite("shape_processed.png", img_processed)centers = list(get_centers(img_processed))
print(centers)"""
[(478, 466), (38, 454), (478, 432), (159, 442), (646, 436), (157, 403), (317, 430), (161, 369), (139, 368), (523, 385), 
(64, 381), (690, 355), (636, 366), (341, 325), (506, 329), (212, 319), (86, 283), (180, 275), (674, 283), (379, 322), 
(525, 256), (299, 311), (434, 254), (634, 212), (316, 203), (233, 204), (567, 172), (148, 228), (59, 199), (418, 158), 
(478, 171), (363, 109), (549, 88), (281, 89), (211, 58), (441, 50), (21, 75), (104, 62), (677, 86), (621, 39), 
(485, 32), (323, 24)]
"""
print(len(centers))  # 42h, w, c = img.shape
count = 0for row in get_rows(img, centers, 4, h):cv2.polylines(img, [row], False, (255, 0, 255), 2)  # 绘制每一行的点连成线for x, y in row:count += 1cv2.circle(img, (x, y), 10, (0, 0, 255), -1)  # 绘制每个点cv2.putText(img, str(count), (x - 10, y + 5), 1, cv2.FONT_HERSHEY_PLAIN, (0, 255, 255), 2)# 每个点上写上序号cv2.imshow("Ordered", img)
cv2.waitKey(0)

process_img 后图像为

在这里插入图片描述

get_centers 函数找轮廓,面积较大的轮廓经过 get_centeroid 函数找轮廓中心

找轮廓中心的方法是遍历轮廓点,求横坐标和纵坐标的平均值

轮廓中心 centers 的长度为 42,可以看到我们找出来了图片中 42 个中心 ,也即找出来了 42 个轮廓

[(478, 466), (38, 454), (478, 432), (159, 442), (646, 436), (157, 403), (317, 430), (161, 369), (139, 368), (523, 385), 
(64, 381), (690, 355), (636, 366), (341, 325), (506, 329), (212, 319), (86, 283), (180, 275), (674, 283), (379, 322), 
(525, 256), (299, 311), (434, 254), (634, 212), (316, 203), (233, 204), (567, 172), (148, 228), (59, 199), (418, 158), 
(478, 171), (363, 109), (549, 88), (281, 89), (211, 58), (441, 50), (21, 75), (104, 62), (677, 86), (621, 39), 
(485, 32), (323, 24)]

遍历每行,排序纵坐标落在行内区间的轮廓中心

get_rowsf

array([466., 454., 432., 442., 436., 403., 430., 369., 368., 385., 381.,355., 366., 325., 329., 319., 283., 275., 283., 322., 256., 311.,254., 212., 203., 204., 172., 228., 199., 158., 171., 109.,  88.,89.,  58.,  50.,  75.,  62.,  86.,  39.,  32.,  24.])

get_rowsa

array([[363, 109],[549,  88],[281,  89],[211,  58],[441,  50],[ 21,  75],[104,  62],[677,  86],[621,  39],[485,  32],[323,  24]])

a.argsort(0) 按列排序

array([[ 5, 10],[ 6,  9],[ 3,  8],[ 2,  4],[10,  3],[ 0,  6],[ 4,  5],[ 9,  7],[ 1,  1],[ 8,  2],[ 7,  0]])

取出 x 的排序索引 a.argsort(0)[:, 0]

array([ 5,  6,  3,  2, 10,  0,  4,  9,  1,  8,  7])

得到排序后的结果 a[a.argsort(0)[:, 0]]

array([[ 21,  75],[104,  62],[211,  58],[281,  89],[323,  24],[363, 109],[441,  50],[485,  32],[549,  88],[621,  39],[677,  86]])

可视化结果,同一行的点连成线,绘制点,标上序号

最终输出

在这里插入图片描述

我们设置的 4 行,可以看到有 4 条直线

3、效果展示

get_rows(img, centers, 4, h) 配置不同的行数看看效果

1 行

在这里插入图片描述

2 行

在这里插入图片描述
3 行

在这里插入图片描述

4 行
在这里插入图片描述
5 行
在这里插入图片描述

6 行

在这里插入图片描述
7 行

在这里插入图片描述

4、更多例子

输入图片

在这里插入图片描述

前处理后的图片
在这里插入图片描述

2 行输出结果
在这里插入图片描述


输入图片

在这里插入图片描述

前处理后的图片

在这里插入图片描述

2 行输出结果

在这里插入图片描述

可以看到没有闭合的轮廓被舍弃掉了


输入图片

在这里插入图片描述

前处理后的图片

在这里插入图片描述

10 行输出结果

在这里插入图片描述


输入图片

在这里插入图片描述

前处理后的图片

在这里插入图片描述

4 行输出结果

在这里插入图片描述


输入图片

在这里插入图片描述

前处理后的图片

在这里插入图片描述

6 行输出结果

在这里插入图片描述


输入图片

在这里插入图片描述

前处理后的图片

在这里插入图片描述

2 行输出结果

在这里插入图片描述

5、参考

  • 使用OpenCV对点集从左上到右下排序
http://www.hkea.cn/news/83455/

相关文章:

  • 运城市做网站英文seo外链
  • 江宁网站建设如何建立网上销售平台
  • 淄博企业网站建设有限公司搜索引擎关键词竞价排名
  • 网站的优点企业专业搜索引擎优化
  • 哪里有软件开发培训机构无锡seo培训
  • 网站怎么做反链seo是什么品牌
  • 技术型网站做哪一种好软文范例大全100
  • 百度搜索什么关键词能搜到网站seo高效优化
  • 网站搭建分站需要多少钱互联网营销策划
  • 音乐网站的音乐怎么做seo先上排名后收费
  • 清河做网站报价seo实战培训王乃用
  • wordpress 回收站在哪个文件夹营销方式和手段
  • 垂直型电商网站如何做快速排名软件哪个好
  • 做产品推广有网站比较好的免费自助建站平台
  • 番禺网站建设公司排名百度推广页面投放
  • 沈阳做微网站百度收录刷排名
  • 网站建设与管理技术发展seo是什么意思如何实现
  • 手机游戏开发制作公司最新seo视频教程
  • 网站优化过度被k长春seo排名公司
  • wordpress移除谷歌字体seo网站推广与优化方案
  • 十大景观设计公司排名seo权重查询
  • 水友做的yyf网站十大免费引流平台
  • 东莞公司网站制作百度识图网页版 在线
  • 企业级网站内容管理解决方案网站关键词快速排名服务
  • 影视采集网站怎么做收录关键词是网站seo的核心工作
  • 开发一个网站需要多少时间百度账号免费注册
  • 化妆品网站主页设计长沙关键词优化方法
  • 南阳建网站企业百度推广优化工具
  • 怎样把自己做的网页放在网站里如何做宣传推广营销
  • 七谷网络工作室重庆优化seo