You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

疑问:OpenCV回调函数clickPosition如何获知x、y为图像点击坐标?

关于OpenCV鼠标回调函数获取坐标的解释

这是OpenCV底层事件机制自动完成的参数传递,具体逻辑如下:

  • 当你调用cv2.setMouseCallback("Output", clickPosition)时,相当于把clickPosition函数注册为窗口"Output"的鼠标事件处理器。
  • 每当窗口内触发鼠标事件(比如你代码里监听的左键点击cv2.EVENT_LBUTTONDOWN),OpenCV的内部事件循环会自动捕获该事件的全部细节:包括事件类型、点击的精确坐标(x,y)、鼠标/键盘按键状态(flags)、以及注册回调时可选传入的额外参数(param)。
  • OpenCV会严格遵循它规定的鼠标回调函数签名(event, x, y, flags, param的固定顺序),把捕获到的这些值自动传入你定义的clickPosition函数。
  • 你写的clickPosition函数完全符合这个签名要求,所以直接就能通过x、y参数拿到当前点击的图像坐标。

简单来说:参数传递是OpenCV内部帮你做的,你只需要按照它规定的函数格式写回调,就能直接使用这些参数。

# 你的代码示例(方便对照)
import cv2
img = cv2.imread("image/tree.jpg")

def clickPosition(event,x,y,flags,param):
    if event == cv2.EVENT_LBUTTONDOWN:
        text = str(x)+","+str(y)
        cv2.putText(img,text,(x,y),cv2.FONT_HERSHEY_SIMPLEX,1,(0,0,255),cv2.LINE_4)
        cv2.imshow("Output",img)

cv2.imshow("Output",img)
cv2.setMouseCallback("Output",clickPosition)
cv2.waitKey(0)
cv2.destroyAllWindows()

内容的提问来源于stack exchange,提问作者Jittabun chantamul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 08:20:53