我会使用以下方法尝试找到问题中提供的四行.

1.读取图像,并将其转换为灰度

import cv2

import numpy as np

rgb_img = cv2.imread('pipe.jpg')

height, width = gray_img.shape

gray_img = cv2.cvtColor(rgb_img, cv2.COLOR_BGR2GRAY)

2.在图像顶部添加一些白色填充(只是为了有一些额外的背景)

white_padding = np.zeros((50, width, 3))

white_padding[:, :] = [255, 255, 255]

rgb_img = np.row_stack((white_padding, rgb_img))

结果图片 –

3.反转灰度图像并在顶部应用黑色填充

gray_img = 255 - gray_img

gray_img[gray_img > 100] = 255

gray_img[gray_img <= 100] = 0

black_padding = np.zeros((50, width))

gray_img = np.row_stack((black_padding, gray_img))

4.使用形态学关闭填补图像中的漏洞 –

kernel = np.ones((30, 30), np.uint8)

closing = cv2.morphologyEx(gray_img, cv2.MORPH_CLOSE, kernel)

5.使用Canny边缘检测在图像中查找边缘 –

edges = cv2.Canny(closing, 100, 200)

6.现在,我们可以使用openCV的HoughLinesP函数来查找给定图像中的行 –

minLineLength = 500

maxLineGap = 10

lines = cv2.HoughLinesP(edges, 1, np.pi / 180, 50, None, 50, 100)

all_lines = lines[0]

for x1,y1,x2,y2 in lines[0]:

cv2.line(rgb_img,(x1,y1),(x2,y2),(0,0,255),2)

7.现在,我们必须找到最右边的两条水平线和两条最底部的垂直线.对于水平线,我们将使用两个(x2,x1)按降序对线进行排序.此排序列表中的第一行将是最右边的垂直线.跳过它,如果我们采用接下来的两行,它们将是最右边的水平线.

all_lines_x_sorted = sorted(all_lines, key=lambda k: (-k[2], -k[0]))

for x1,y1,x2,y2 in all_lines_x_sorted[1:3]:

cv2.line(rgb_img,(x1,y1),(x2,y2),(0,0,255),2)

8.类似地,可以使用y1坐标按降序对行进行排序,并且排序列表中的前两行将是最下面的垂直行.

all_lines_y_sorted = sorted(all_lines, key=lambda k: (-k[1]))

for x1,y1,x2,y2 in all_lines_y_sorted[:2]:

cv2.line(rgb_img,(x1,y1),(x2,y2),(0,0,255),2)

9.两行图像 –

final_lines = all_lines_x_sorted[1:3] + all_lines_y_sorted[:2]

因此,获得这4行可以帮助您完成剩余的任务.

python图像边缘检测报告_python – 检测图像的最外边缘并基于它进行绘图相关推荐

  1. python打开jpg照片_python打开图像

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python有很多库可以进行图像文件的读写,比如图像处理包pillow,科学绘图 ...

  2. python 图像变化检测_霍夫变换检测图像直线算法python实现

    创作不易,如果对您有帮助,帮忙点赞哦! 一. 霍夫变换理解: 二. 霍夫变换简介: 霍夫变换,是将坐标由直角坐标系变换到极坐标系,然后再根据数学表达式检测某些形状(如直线和圆)的方法.当 l1直线 上 ...

  3. 利用python对图像进行傅里叶变换_python实现图像傅里叶变换

    创作不易,如果对您有所帮助,请帮忙点赞,感谢! 一. 傅里叶变换简介: 在数字图像处理中,有两个经典的变换被广泛使用--傅里叶变换和霍夫变换.傅里叶变换是将时间域上的信号转变为频率域上的信号,进而进行 ...

  4. java图像风格迁移_Python+OpenCV 图像风格迁移(模仿名画)

    现在很多人都喜欢拍照(自拍).有限的滤镜和装饰玩多了也会腻,所以就有 APP 提供了模仿名画风格的功能,比如 prisma.versa 等,可以把你的照片变成 梵高.毕加索.蒙克 等大师的风格. 这种 ...

  5. python去除图片马赛克_python 检测图片是否有马赛克

    首先是canny边缘检测,将图片的边缘检测出来,参考博客 原理讲的很清晰,给原博主一个赞 边缘检测之后按照正方形检索来判定是否是马赛克内容 原理知晓了之后就很好做了 话说matlab转化为python ...

  6. python综合实验报告_Python程序设计实验报告五:综合运用三种基本结构进行程序设计(综合性实验)...

    安徽工程大学 Python程序设计 实验报告 班级 物流191 姓名姚彩琴学号3190505129 成绩 日期 2020.4.22 指导老师修宇 [实验名称]综合运用三种基本结构进行程序设计(综合性实 ...

  7. python上机编程报告_Python程序设计实验报告六:函数

    安徽工程大学 Python程序设计 实验报告 班级:物流191 姓名:徐丹丹 学号:3190505132 成绩: 日期:2020年5月4日 指导老师:修宇 [实验目的] 掌握函数的定义与使用方法:掌握 ...

  8. python综合实验报告_Python程序设计 实验报告

    安徽工程大学 Python程序设计 实验报告 班级:物流192       姓名:刘马汉卿学号:319005211 成绩:            日期:2020年4月29日        指导老师:修 ...

  9. python程序项目报告_python程序设计实验报告

    安徽理工大学Python编程实验报告类物流192名陆代学生号码3190505207年级日期教师秀于实验名称实验一个熟悉闲置和在线编程平台实验目的1.掌握python闲置的安装和使用集成开发环境2.熟悉 ...

最新文章

  1. Linux中find常见用法示例
  2. Ubuntu16.04下arm-linux-gcc交叉编译环境搭建
  3. ios绘图基本图形之线条
  4. 建立数组并写入数据_Visual Studio 2010--C#跟西门子1200通讯(Sharp7)⑥--数据写入
  5. Javascript之创建对象(原型模式)
  6. 【registry】registry An exception was thrown while processing request with message
  7. infortrend ESDS RAID6故障后的数据恢复方案
  8. HPC+AI融合发展的挑战和应对方法探讨
  9. java mschart_vb之mschart控件小结
  10. 考试倒计时,计算机二级重难点汇总【39套历年考题】
  11. 系统集成项目管理工程师中高级一次通过经验之谈
  12. facebook登录我游戏_Facebook对我的位置了解多少
  13. windows meson ,ninja安装以及vs2017编译 libnice
  14. 平分七筐鱼c语言y,平分七筐鱼 - 寂寞暴走伤的个人空间 - OSCHINA - 中文开源技术交流社区...
  15. Samba误删除文件恢复(开启回收站)
  16. Springboot 使用设计模式- 策略模式
  17. PIL.image保存图片
  18. 4、selenium3的安装
  19. 两个进程共享内存,一个写,一个读
  20. 基于springboot的企业员工工资管理系统(财务系统)

热门文章

  1. leetcode 203 python3
  2. 贪心算法——洛谷(P1478)陶陶摘苹果
  3. python中map函数返回值类型_Python函数精解:map函数
  4. MySQL 8.0 安装部署3个注意事项
  5. 数据库上云如何顺利进行?6位专家直播助你一臂之力
  6. 群英论道聚北京,共话PostgreSQL
  7. ElasticSearch最全详细使用教程:入门、索引管理、映射详解、索引别名、分词器、文档管理、路由、搜索详解...
  8. 初探语音识别ASR算法
  9. 华为云FusionInsight MRS:千余节点滚动升级业务无中断
  10. 扎根CNCF社区贡献五年是怎样的体验?听听华为云原生开源团队的负责人怎么说