如何在python opencv中插入特定的numpy数组?

问题描述

我正在尝试通过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 (将#修改为@)