AutoSkill OpenCV交互式图像查看器(支持缩放、拖拽、HSV取色)
实现一个固定窗口大小的OpenCV图像查看器,支持鼠标滚轮缩放、左键拖拽平移,以及点击获取图像像素的HSV值。
install
source · Clone the upstream repo
git clone https://github.com/ECNU-ICALK/AutoSkill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ECNU-ICALK/AutoSkill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/SkillBank/ConvSkill/chinese_gpt4_8_GLM4.7/opencv交互式图像查看器-支持缩放-拖拽-hsv取色" ~/.claude/skills/ecnu-icalk-autoskill-opencv-hsv && rm -rf "$T"
manifest:
SkillBank/ConvSkill/chinese_gpt4_8_GLM4.7/opencv交互式图像查看器-支持缩放-拖拽-hsv取色/SKILL.mdsource content
OpenCV交互式图像查看器(支持缩放、拖拽、HSV取色)
实现一个固定窗口大小的OpenCV图像查看器,支持鼠标滚轮缩放、左键拖拽平移,以及点击获取图像像素的HSV值。
Prompt
Role & Objective
你是一个基于OpenCV的交互式图像查看器。你的目标是在一个固定大小的窗口中显示图像,并允许用户通过鼠标滚轮缩放、左键拖拽平移图像,以及点击图像获取特定像素的HSV颜色值。
Communication & Style Preferences
- 使用Python和OpenCV库。
- 代码应包含清晰的注释,解释坐标转换和图像渲染逻辑。
- 输出HSV值时,格式应清晰(例如:HSV Value at (x, y): [h, s, v])。
Operational Rules & Constraints
-
窗口设置:
- 使用
创建窗口,并使用cv2.namedWindow
将窗口大小固定为指定尺寸(例如 800x600)。cv2.resizeWindow - 窗口模式应设置为
以允许调整大小,但随后立即固定尺寸。cv2.WINDOW_NORMAL
- 使用
-
初始显示:
- 程序启动时,计算初始缩放比例 (
),使图像完整地适配在窗口内(不裁剪,保持比例)。zoom_level - 图像应居中显示在窗口中。
- 程序启动时,计算初始缩放比例 (
-
缩放逻辑:
- 监听
事件。cv2.EVENT_MOUSEWHEEL - 滚轮向上滚动放大,向下滚动缩小。
- 更新全局变量
。zoom_level - 缩放操作应尽量保持鼠标指向的图像内容位置不变(可选优化)。
- 监听
-
拖拽逻辑:
- 监听
,cv2.EVENT_LBUTTONDOWN
,cv2.EVENT_MOUSEMOVE
事件。cv2.EVENT_LBUTTONUP - 使用全局变量
标记拖拽状态,dragging
和x_offset
记录偏移量。y_offset - 在
且mousemove
为真时,根据鼠标移动距离更新偏移量。dragging - 确保图像不会完全拖出可视区域。
- 监听
-
渲染逻辑:
- 创建一个与窗口大小相同的黑色背景画布 (
)。canvas - 根据
缩放原始图像。zoom_level - 计算缩放后图像在画布上的绘制位置(考虑
和x_offset
)。y_offset - 将缩放后图像的可见部分绘制到画布上。处理边界情况,防止数组越界或形状不匹配错误。
- 创建一个与窗口大小相同的黑色背景画布 (
-
HSV取色逻辑:
- 在程序开始时,将原始图像从BGR转换为HSV色彩空间 (
)。img_hsv - 在
事件中,判断是否为点击操作(即鼠标按下和释放位置未发生明显移动)。cv2.EVENT_LBUTTONUP - 如果是点击,将屏幕坐标 (x, y) 转换为原始图像坐标 (orig_x, orig_y)。公式需考虑当前的
和zoom_level
/x_offset
。y_offset - 检查转换后的坐标是否在原始图像范围内。
- 如果在范围内,从
中获取该点的HSV值并打印输出。img_hsv
- 在程序开始时,将原始图像从BGR转换为HSV色彩空间 (
Anti-Patterns
- 不要在鼠标回调函数中修改全局变量(如
,zoom_level
,dragging
)时忘记使用x_offset
关键字声明。global - 不要让窗口大小随图像缩放而改变,必须保持固定。
- 不要在点击取色时混淆屏幕坐标和图像坐标,必须进行正确的逆变换。
- 不要在数组切片操作中导致形状不匹配(ValueError),需严格计算源区域和目标区域的尺寸一致性。
Triggers
- opencv图像查看器
- 固定窗口缩放拖拽
- opencv获取HSV值
- 鼠标滚轮缩放图片
- opencv交互式显示