如何解决Windows:在相机预览上绘制矩形
类似的问题已经被问到很多关于 Android 的问题,但到目前为止我还没有找到与 Windows 操作系统相关的资源。所以基本上,正如主题所暗示的那样,我想在我的相机预览上绘制一个矩形。已经完成了一些工作,但是我的程序中仍然存在一些问题。由于某些限制,我想尽可能避免使用 opencv。以下是我的方法:
- 打开 Window 的内置相机应用
- 运行 Python 代码,在屏幕上逐个像素地绘制矩形(见下文)
- 用鼠标点击屏幕以移动矩形及其左上角
正如您在代码中看到的,我实际上并不是在相机预览上绘图,而是在我的屏幕上绘图,其中相机预览在低一层运行。
这是python代码:
import win32gui,win32ui,win32api,win32con
from win32api import GetSystemMetrics
dc = win32gui.GetDC(0)
dcObj = win32ui.CreateDCFromHandle(dc)
hwnd = win32gui.WindowFromPoint((0,0))
monitor = (0,GetSystemMetrics(0),GetSystemMetrics(1))
red = win32api.RGB(255,0) # Red
past_coordinates = monitor
rec_x = 200 # width of rectangle
rec_y = 100 # height of rectangle
m = (100,100) # initialize start coordinate
def is_mouse_down():
key_code = win32con.VK_LBUTTON
state = win32api.GetAsyncKeyState(key_code)
return state != 0
while True:
if(is_mouse_down() == True):
m = win32gui.GetCursorPos()
for x in range(rec_x):
win32gui.SetPixel(dc,m[0]+x,m[1],red)
win32gui.SetPixel(dc,m[1]+rec_y,red)
for y in range(rec_y):
win32gui.SetPixel(dc,m[0],m[1]+y,red)
win32gui.SetPixel(dc,m[0]+rec_x,red)
因此,我能够绘制一个红色矩形。然而,由于屏幕不断刷新,我的矩形的两条水平线(见下面的 gif)显示为从左到右的运行点。我找不到或想不出改善这一点的方法,同时保持每次点击移动矩形的可能性。
附注。忽略白色矩形。当您点击预览中的任意位置时,它是相机应用程序的内置内容。
以下是我用来完成此步骤的参考资料:
- How to draw an empty rectangle on screen with Python
- https://python-forum.io/Thread-How-to-trigger-a-function-by-clicking-the-left-mouse-click
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。