opencv多边形按像素放大或缩小,可用于缩放提取后的轮廓

代码示例如下:

#!/usr/bin/env python
# -*- encoding: utf-8 -*-
'''
@File    :   多边形等距缩放.py
@data    :2021/7/5 15:53
@Desciption :
@Version  :
@License :
'''import cv2
import numpy as np
def scale(data, sec_dis):"""多边形等距缩放Args:data: 多边形按照逆时针顺序排列的的点集sec_dis: 缩放距离Returns:缩放后的多边形点集"""num = len(data)scal_data = []for i in range(num):x1 = data[(i) % num][0] - data[(i - 1) % num][0]y1 = data[(i) % num][1] - data[(i - 1) % num][1]x2 = data[(i + 1) % num][0] - data[(i) % num][0]y2 = data[(i + 1) % num][1] - data[(i) % num][1]d_A = (x1 ** 2 + y1 ** 2) ** 0.5d_B = (x2 ** 2 + y2 ** 2) ** 0.5Vec_Cross = (x1 * y2) - (x2 * y1)if (d_A * d_B==0):continuesin_theta = Vec_Cross / (d_A * d_B)if (sin_theta==0):continuedv = sec_dis / sin_thetav1_x = (dv / d_A) * x1v1_y = (dv / d_A) * y1v2_x = (dv / d_B) * x2v2_y = (dv / d_B) * y2PQ_x = v1_x - v2_xPQ_y = v1_y - v2_yQ_x = data[(i) % num][0] + PQ_xQ_y = data[(i) % num][1] + PQ_yscal_data.append([Q_x, Q_y])return scal_datadata = [[454 , 76],[448 ,78],[444,  81],[440 , 85],[438,  90],[437,  96],[436 ,101],[434, 107],[432 ,112],[431 ,117],[430 ,123],[429, 129],[428, 134],[427, 140],[427, 145],[427, 151],[427 ,157],[427 ,163],[427, 169],[427, 175],[427, 181],[427, 187],[428, 193],[428 ,199],[429, 204],[429, 210],[429 ,216],[430, 222],[431, 227],[431, 233],[431, 239],[432, 245],[433, 250],[434, 256],[435 ,261],[436 ,267],[437 ,272],[438, 278],[439, 283],[441, 289],[442, 294],[443, 300],[445, 305],[446, 310],[448, 316],[450, 321],[453, 330],[461, 334],[466, 336],[471, 338],[477 ,340],[482, 340],[488, 341],[494, 341],[500, 341],[506 ,341],[511 ,340],[517, 339],[523 ,338],[528, 337],[533, 335],[539, 333],[544, 331],[549, 329],[553, 326],[558, 322],[562, 318],[566, 313],[568, 308],[569, 303],[570, 297],[570, 291],[569, 285],[569, 280],[568, 274],[567, 268],[566 ,263],[566 ,257],[564 ,252],[564 ,246],[562, 241],[561, 235],[560, 230],[560, 224],[558 ,219],[558, 213],[556, 207],[555, 202],[554, 196],[553, 191],[552, 185],[550, 180],[549, 174],[548, 169],[547 ,164],[545 ,158],[543 ,153],[541 ,148],[539 ,143],[536 ,138],[533 ,133],[530, 128],[528 ,124],[524 ,119],[520 ,115],[515, 111],[511, 108],[506 ,106],[501 ,104],[495 ,102],[490, 101],[485 , 99],[480 , 97],[475 , 93],[471 , 89],[468 , 84],[465,  80],[460 , 76]]data1 = scale(data,-10)
print(data1)
temp = np.ones((1300,1000,3), np.uint8) * 255
#cv2.polylines(temp, data1, 1, 255)
cv2.polylines(temp , [np.array(data , dtype=np.int32)], True, (255, 0, 0), 1)
cv2.polylines(temp , [np.array(data1 , dtype=np.int32)], True, (0, 0, 255), 1)
cv2.imshow ("img",temp)
cv2.imwrite("1.jpg",temp)
cv2.waitKey(0)

opencv多边形轮廓等距缩放相关推荐

  1. 采用OpenCv——多边形等距收缩实现

    摘要 最近由于公司业务需求,需要实现对一个多边形进行等距收缩一定距离,其实现效果图大致如下: 虽然单点距离貌似收缩情况不太正确,不过看起来还是蛮顺眼的.反正领导看到一眼就说他要这样的,好嘞,小二马上给 ...

  2. 使用Python,OpenCV进行涂鸦(绘制文字、线、圆、矩形、椭圆、多边形轮廓、多边形填充、箭头~)

    使用Python,OpenCV进行涂鸦(绘制文字.线.圆.矩形.椭圆.多边形轮廓.多边形填充.箭头) 1. 效果图 2. 原理 2.1 绘制线:cv2.line(canvas, (300, 0), ( ...

  3. 多边形轮廓等比例缩放

    多边形(轮廓点)等距离外扩 1.需要安装一个python包 安装 pyclipper python 的话,直接pip install pyclipper 地址:https://pypi.org/pro ...

  4. opencv 绘制轮廓边框 多边形 圆形 矩形

    如何使用opencv 绘制轮廓边框最小包裹 多边形 圆形 矩形? 函数说明: Rect boundingRect(InputArray points) points:输入信息,可以为包含点的容器(ve ...

  5. Python,OpenCV应用轮廓逼近算法,检测对象的形状

    上一篇博客,我们学习了如何利用Python.OpenCV计算轮廓的中心,这一节学习仅运用轮廓的基本属性来检测其形状,三角形,正方形,矩形,五边形,圆. (1)利用轮廓逼近,将曲线上的点数减少为更简单的 ...

  6. 如何利用OpenCV寻找轮廓的中心?

    简 介: 本文介绍了利用OpenCV和Python编程来计算形状轮廓的中心点.当然后面还会继续给出如何通过轮廓来分辨物体形状种类,以及对于各自的颜色进行标准. 关键词: OpenCV,contours ...

  7. OpenCV的轮廓查找和填充

    OpenCV的轮廓查找有C版本和C++版本,当轮廓比较复杂的时候,例如嵌入多层轮廓,如果方法不当那么很容易会漏处理一些轮廓.本文介绍了复杂轮廓场景下的几种主要的查找轮廓和颜色填充方法. 1:cvFin ...

  8. 使用Opencv进行轮廓检测,字符提取,简单的直方图字符识别!

    一.使用Opencv进行轮廓检测! 所需函数: 1. cvFindContours 函数功能:从二值图像中检索轮廓,并返回检测到的轮廓的个数 函数原型: int)  cvFindContours( C ...

  9. OPENCV图像轮廓检测

    前面在图像转换的时候学到canny算子,可以检测出图像的轮廓信息,但是,该算子检测到的轮廓信息还需要我们手动的用眼睛去识别,而实际工程应用中,我们需要得到轮廓的具体数学信息,这就涉及到今天的主题,图像 ...

最新文章

  1. 过程中存根的作用有_模温机的作用 模压过程中模温机的作用有哪些?
  2. win32汇编使用win32 api实现字符串拷贝
  3. OpenCV学习笔记之OpenCV安装
  4. 5月16日 | 硬核突破,应用革新!阿里云数据库线下活动-北京站开启
  5. ajax 小木虫,NIST数据库中Acc. 是什么 小木虫
  6. java写exe程序实例_2012软考软件设计师辅导:利用JAVA执行本地EXE文件
  7. 微分方程的数值解法与程序实现 pdf_初中数学知识点|一元一次方程的概念及讲解(二)建议收藏!内含pdf版...
  8. 最近30分钟合约市场爆仓842万美元
  9. struts获取ajax传值,struts 接收 jquery带参数ajax请求
  10. C ++ stringstream –参考和使用指南
  11. postman测试websocket_还在手工写接口测试文档,已经out了
  12. mysql_affected_rows()、mysql_fetch_row、mysql_fetch_assoc
  13. 3DMAX2016破解教程
  14. “百度杯”CTF比赛 九月场--web Upload
  15. Qt简单实现雷达扫描[附源码]
  16. IoT黑板报0207:MU-MIMO技术让网络龟速变神速
  17. easyx的基础应用教程
  18. ebcdic编码与ascII编码互转
  19. 【零基础学Python】Day13 Python函数
  20. 12. STM32——硬件IIC驱动OLED屏幕显示

热门文章

  1. 【Git】Git冲突与解决方法
  2. 华为儿童手表3Pro安装第三方软件(固件升级后)
  3. 我的世界1.6.2服务器修改器,我的世界1.6.2服务器指令大全 服务器指令
  4. 蓝桥杯 prev37 分巧克力
  5. cass生成曲线要素_使用CASS6_0获取道路平曲线测设元素的解决方案
  6. c语言字符串malloc,C语言 复制字符串 malloc
  7. 几个好用搜索福利网站
  8. 2022年执法资格税务执法考试判断题专项训练题及答案
  9. Java多线程详解(线程同步)
  10. Numpy数字类型 dtype