我尝试使用C++和OpenCV开发远程程序,并想要改变鼠标光标(十字线)。
然而,在OpenCV中更改它是困难的。 (在WINAPI中,可以使用Setcursor函数进行更改)
有没有办法改变鼠标光标图像?或隐藏它?
我尝试使用C++和OpenCV开发远程程序,并想要改变鼠标光标(十字线)。
然而,在OpenCV中更改它是困难的。 (在WINAPI中,可以使用Setcursor函数进行更改)
有没有办法改变鼠标光标图像?或隐藏它?
我有同样的需求,你可以这样做:
import cv2
import win32api
import win32con
def mouse_evt(event, x, y, flags, param):
# Mouse is Moving
if event == cv2.EVENT_MOUSEMOVE:
if some_condition:
win32api.SetCursor(win32api.LoadCursor(0, win32con.IDC_SIZEALL))
cv2.namedWindow("image")
cv2.setMouseCallback("image", mouse_evt)
while True:
cv2.imshow("image", image)
cv2.waitKey(10)
我个人使用它来拖动裁剪点,当光标接近图像上的一个设定点时,some_condition返回true。
我偶然发现了this,虽然它不直接适用于我们,但在你这样做之前:
import cv2
import win32api
cv2.namedWindow("my_window")
cv2.setMouseCallback("my_window", mouse_evt)
def mouse_evt(event, x, y, flags, param):
# could also probably do: def mouse_evt(*args):
win32api.SetCursor(None)
隐藏光标的方法。这种解决方案的问题在于,如果光标移动,你可能会看到它的一闪而过。但是,如果你愿意忽略这个问题,它就能完美地工作。