显示图像。

简介: 显示图像。

image.png

image.png

import cv2
img = cv2.imread('star.png')
cv2.imshow('pic', img)

img2 = cv2.Canny(img, 200, 300)
cv2.imshow('pic2', img2)


h = cv2.findContours(img2, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
print(type(h[0]))
print(len(h[0]))
print(type(h[1]))

cv2.drawContours(img,h[0],-1,(0,0,255),4)
cv2.imshow('contours', img)


cv2.waitKey(0)
cv2.destroyAllWindows()
  1. import cv2:
    导入 OpenCV 库,它是一个功能强大的图像处理和计算机视觉库。

  2. img = cv2.imread('star.png'):
    使用 cv2.imread 函数读取名为 'star.png' 的图像文件,并将其存储在变量 img 中。img 是一个 NumPy 数组。

  3. cv2.imshow('pic', img):
    使用 cv2.imshow 函数显示图像 img,窗口的标题是 'pic'。

  4. img2 = cv2.Canny(img, 200, 300):
    使用 Canny 算法从图像 img 中检测边缘。Canny 算法是一个多级算法,用于从图像中准确地检测边缘。200300 分别是该算法的低阈值和高阈值,用于确定边缘。

  5. cv2.imshow('pic2', img2):
    显示经过 Canny 算法处理后的图像 img2,窗口标题是 'pic2'。

  6. h = cv2.findContours(img2, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE):
    cv2.findContours 函数用于在二值图像 img2 中查找所有轮廓。cv2.RETR_EXTERNAL 表示只检索最外层的轮廓,cv2.CHAIN_APPROX_NONE 表示存储整个轮廓链,不执行轮廓近似。函数返回的 h 是一个包含两个元素的列表:

    • h[0] 是轮廓点的数组,
    • h[1] 是与轮廓相关的循环(或“层次”)数组。
  7. print(type(h[0])):
    打印轮廓点数组 h[0] 的类型。

  8. print(len(h[0])):
    打印轮廓点数组 h[0] 中轮廓的数量。

  9. print(type(h[1])):
    打印轮廓层次数组 h[1] 的类型。

  10. cv2.drawContours(img, h[0], -1, (0, 0, 255), 4):
    使用 cv2.drawContours 函数在原始图像 img 上绘制轮廓。h[0] 是要绘制的轮廓数组,-1 表示绘制所有轮廓,(0, 0, 255) 是轮廓的颜色(红色),4 是轮廓的粗细。

  11. cv2.imshow('contours', img):
    显示绘制了轮廓的图像 img,窗口标题是 'contours'。

  12. cv2.waitKey(0):
    等待用户按下任意键。0 表示无限期地等待按键输入。

  13. cv2.destroyAllWindows():
    销毁所有由 OpenCV 创建的窗口。

目录
相关文章
|
1月前
|
人工智能 自然语言处理 安全
妙妙妙妙!公文、合同、标书…全妙闭环了
阿里云百炼|全妙,是面向政企、媒体等专业领域的智能创作平台,集“妙策、妙搜、妙笔、妙读”于一体,覆盖公文撰写、合同审查、标书生成、内容采编等高合规场景,助力用户降本增效,释放创造力。
303 25
|
5月前
|
监控 Android开发 数据安全/隐私保护
批量发送短信的平台,安卓群发短信工具插件脚本,批量群发短信软件【autojs版】
这个Auto.js脚本实现了完整的批量短信发送功能,包含联系人管理、短信内容编辑、发送状态监控等功能
|
6月前
|
NoSQL MongoDB 开发者
Python与MongoDB的亲密接触:从入门到实战的代码指南
本文详细介绍了Python与MongoDB结合使用的实战技巧,涵盖环境搭建、连接管理、CRUD操作、高级查询、索引优化、事务处理及性能调优等内容。通过15个代码片段,从基础到进阶逐步解析,帮助开发者掌握这对黄金组合的核心技能。内容包括文档结构设计、批量操作优化、聚合管道应用等实用场景,适合希望高效处理非结构化数据的开发者学习参考。
348 0
|
机器学习/深度学习 安全 网络安全
基于决策树的智能网络安全入侵检测模型
基于决策树的智能网络安全入侵检测模型
|
存储 监控 算法
记一次内存泄漏引发的生产事故
记一次内存泄漏引发的生产事故
493 0
记一次内存泄漏引发的生产事故
|
canal SQL 存储
基于Canal的MySQL=>ES数据同步方案
基于Canal的MySQL=>ES数据同步方案
基于Canal的MySQL=>ES数据同步方案
|
存储
计算机网络:数据报与虚电路
计算机网络:数据报与虚电路
546 0
计算机网络:数据报与虚电路
|
算法 安全 程序员
2.5操作系统(预防死锁 避免死锁 检测和解除死锁)
1.死锁 1.什么是死锁? 2.死锁、饥饿、死循环的区别 3.死锁产生的必要条件 4.什么时候会发生死锁 5.死锁的处理策略 2.死锁的处理策略——预防死锁 1.破坏互斥条件 2.破坏不剥夺条件 3.破坏请求和保持条件 4.破坏循环等待条件 3.死锁的处理策略——避免死锁 1.什么是安全序列 2.安全序列、不安全状态、死锁的联系 3.银行家算法 1. 实现步骤 2. 银行家算法示例(手算) 3. 代码实现 4.死锁的处理策略——检测和解除 1.死锁的检测 2. 死锁的解除
2.5操作系统(预防死锁 避免死锁 检测和解除死锁)
|
前端开发
解决多行文本换行省略显示失效的问题
解决多行文本换行省略显示失效的问题
640 0
解决多行文本换行省略显示失效的问题

热门文章

最新文章