首页 文章 精选 留言 我的

精选列表

搜索[Python环境],共10000篇文章
优秀的个人博客,低调大师

利用Python实现卷积神经网络的可视化(附Python代码)

对于深度学习这种端到端模型来说,如何说明和理解其中的训练过程是大多数研究者关注热点之一,这个问题对于那种高风险行业显得尤为重视,比如医疗、军事等。在深度学习中,这个问题被称作“黑匣子(Black Box)”。如果不能解释模型的工作过程,我们怎么能够就轻易相信模型的输出结果呢? 以深度学习模型检测癌症肿瘤为例,该模型告诉你它能够检测出癌症的准确率高达99%,但它并没有告诉你它是如何工作并给出判断结果的。那么该模型是在核磁共振扫描片子中发现了重要线索吗?或者仅仅是将扫描结果上的污点错误地认为是肿瘤呢?模型的输出结果关系到病人的生死问题及治疗方案,医生是不能承担起这种错误的。 在本文中,将探讨如何可视化卷积神经网络(CNN),该网络在计算机视觉中使用最为广泛。首先了解CNN模型可视化的重要性,其次介绍可视化的几种方法,同时以一个用例帮助读者

优秀的个人博客,低调大师

『OpenCV-Python』鼠标事件

**点赞 + 关注 + 收藏 = 学会了** 在使用 OpenCV 进行图像处理时,有时需要与图像进行交互,例如选择感兴趣区域(ROI)、标注关键点、调整参数、获取图片指定位置的颜色值等。OpenCV 提供了鼠标事件支持,可以在图像窗口中通过鼠标实现丰富的交互功能。 用到的方法是 `cv2.setMouseCallback(window_name, on_mouse, param=None)`,用这个方法监听鼠标在指定窗口里做了什么。 - `window_name`:需要绑定鼠标事件的窗口名称。 - `on_mouse`:回调函数。在这个函数里可以知道用户用鼠标做了什么操作。 - `param`:传递给回调函数的额外参数,可以不传。也可以传你需要的内容,比如传递图像数据到回调函数中,让回调函数可以访问或修改图像。 其中,回调函数(`on_mouse`)需要按照以下形式定义: ``` def on_mouse(event, x, y, flags, param): # event: 当前的鼠标事件类型。 # x, y: 鼠标事件发生时的坐标。 # flags: 事件相关的附加信息(按下键盘时的修饰键状态,比如按下shift健的同时鼠标在图片上有操作)。 # param: 通过 setMouseCallback 传递的额外参数。 ``` OpenCV 提供了多种鼠标事件(`event`),以下是常见类型: |枚举值|数字值|描述| | --- | --- | --- | |cv2.EVENT_MOUSEMOVE|0|鼠标移动| |cv2.EVENT_LBUTTONDOWN|1|鼠标左键按下| |cv2.EVENT_RBUTTONDOWN|2|鼠标右键按下| |cv2.EVENT_MBUTTONDOWN|3|鼠标中键按下| |cv2.EVENT_LBUTTONUP|4|鼠标左键释放| |cv2.EVENT_RBUTTONUP|5|鼠标右键释放| |cv2.EVENT_MBUTTONUP|6|鼠标中键释放| |cv2.EVENT_LBUTTONDBLCLK|7|鼠标左键双击| |cv2.EVENT_RBUTTONDBLCLK|8|鼠标右键双击| |cv2.EVENT_MBUTTONDBLCLK|9|鼠标中键双击| |cv2.EVENT_MOUSEWHEEL|10|滚轮正向滚动(滚轮事件,向上滚动)| |cv2.EVENT_MOUSEHWHEEL|11|滚轮横向滚动(滚轮事件,水平滚动)| 可以通过这些值判断用户做了什么操作。 举个例子,创建一个 400x400 的黑色背景图片,然后监听鼠标在这个图片上做过什么操作。 ![01.gif](https://developer.qcloudimg.com/http-save/yehe-9556244/512b03bbe4b43388047882946d9b9211.webp) ``` import cv2 import numpy as np # 鼠标回调事件 def mouse_callback(event, x, y, flags, param): print(f"事件:{event} | 坐标:x{x}, y{y} | 组合键:{flags} | 额外参数: {param}") # 创建 400x400 黑色背景图片 img = np.zeros((400, 400, 3), dtype=np.uint8) # 展示图片 cv2.imshow("ImgWindow", img) # 监听 ImgWindow 窗口的鼠标事件 cv2.setMouseCallback("ImgWindow", mouse_callback) cv2.waitKey() cv2.destroyAllWindows() ``` 最后的一个参数 `param` 有什么用呢? 如果需要通过鼠标对图像做一些操作,比如框选、标记等操作,可以将图片传入鼠标回调函数里,在里面对图片进行绘制。 举个例子,当检测到鼠标在图像上点击了左键,就在图像对应的位置标记一个红点。 ![02.gif](https://developer.qcloudimg.com/http-save/yehe-9556244/963a86fee62e172e7c127aee2147a24b.webp) ``` import cv2 import numpy as np # 鼠标回调事件 def mouse_callback(event, x, y, flags, param): # 左键按下时绘制一个点 if event == cv2.EVENT_LBUTTONDOWN: img = param # 从 param 参数获取图像 cv2.circle(img, (x, y), 5, (0, 0, 255), -1) # 创建 400x400 黑色背景图片 img = np.zeros((400, 400, 3), dtype=np.uint8) # 展示图片 cv2.imshow("ImgWindow", img) # 监听 ImgWindow 窗口的鼠标事件 cv2.setMouseCallback("ImgWindow", mouse_callback, param=img) while True: cv2.imshow("ImgWindow", img) if cv2.waitKey(1) & 0xFF == 27: # 按 ESC 键退出 break cv2.destroyAllWindows() ``` --- ![mmexport2784aec65807c5bf7201272daafd86cb_1641789422260.gif](https://developer.qcloudimg.com/http-save/yehe-9556244/ff7daed8981010eb049b50236f7da701.webp) **点赞 + 关注 + 收藏 = 学会了**

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册