问题描述
我正在尝试通过win32模块实现屏幕捕获,我发现了一个输出屏幕像素数组的函数,我试图通过numpy在cv2中插入,但是出现错误:
cv2.error: OpenCV(4.4.0) C:/Users/appveyor/AppData/Local/Temp/1/pip-req-build-52oirelq/opencv/modules/highgui/src/precomp.hpp:137: error: (-215:Assertion Failed) src_depth != CV_16F && src_depth != CV_32S in function 'convertToShow'
这是我使用的代码:
import win32gui,win32ui,win32con,cv2
import numpy as np
def foo(width,height):
hwnd = win32gui.GetDesktopWindow()
hdc = win32gui.GetwindowDC(hwnd)
dc = win32ui.CreateDCFromHandle(hdc)
memdc = dc.CreateCompatibleDC()
bitmap = win32ui.CreateBitmap()
bitmap.CreateCompatibleBitmap(dc,width,height)
oldbmp = memdc.SelectObject(bitmap)
memdc.BitBlt((0,0),(width,height),dc,(0,win32con.SRCcopY)
bits = bitmap.GetBitmapBits(False)
memdc.SelectObject(oldbmp)
win32gui.DeleteObject(bitmap.GetHandle())
memdc.DeleteDC()
win32gui.ReleaseDC(hwnd,hdc)
return bits
width = 100
height = 100
bits = foo(width,height)
img = []
line = []
for y in range(0,10):
for x in range(0,10):
p = (y * width + x) * 4
blu = bits[p + 0] & 0xFF
grn = bits[p + 1] & 0xFF
red = bits[p + 2] & 0xFF
line.append([blu,grn,red])
img.append(line)
line = []
img = np.array(img)
cv2.imshow("CO-4",img)
cv2.waitKey(0)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)