最近一直在研究yolov5目标检测相关的,由于mss截图的速度不够满足我的需求,于是在论坛上搜索dxgi相关,找到一个大佬的源码和已经封装好了的dll,帖子链接:这是大佬的帖子,里面包含了c++源码与e的源码,,但是在我用python调用dll,进行转化时不知道怎么去转化成bytes类型的(目的是要把截图的数据能通过PIL或者cv2来调用),一下是我python的代码,希望有搞过的大佬能够指点一哈。大佬的源码也放在附件里了
from ctypes import *
pDll = cdll.LoadLibrary("MirrorScreen.dll")
gdi32 = windll.LoadLibrary('gdi32.dll')
pDll.dxgi_create.restype = c_void_p
m_dxgi = pDll.dxgi_create()
print(m_dxgi)
if m_dxgi != 0:
m_bin_size = pDll.dxgi_get_size(m_dxgi)
m_nHeight = pDll.dxgi_get_width(m_dxgi)
m_nWidth = pDll.dxgi_get_width(m_dxgi)
print(m_bin_size)
m_bin = create_string_buffer(m_bin_size)
print(m_bin, type(m_bin))
ret = pDll.dxgi_get_frame(m_dxgi, m_bin, 0)
if ret == 0:
ret1 = gdi32.CreateBitmap(m_nWidth, m_nHeight, 1, 32, m_bin)
print(ret1)
# 写到这里不知道怎么去写了
pDll.dxgi_destroy(m_dxgi)
|