通过python 3.7.3用openCV截图显示一个区域
该项目的最终目标是捕获屏幕并在屏幕截图位置(中点和半径)输出圆。所以这个项目的一个开始就是捕捉屏幕并通过一个圆圈查找功能发送它。 我从这里开始: 这对它的功能起作用,在我的机器上,通过python 3.7.3用openCV截图显示一个区域,python,opencv,screenshot,Python,Opencv,Screenshot,该项目的最终目标是捕获屏幕并在屏幕截图位置(中点和半径)输出圆。所以这个项目的一个开始就是捕捉屏幕并通过一个圆圈查找功能发送它。 我从这里开始: 这对它的功能起作用,在我的机器上,cv2.imshow成功地显示了它应该显示的屏幕截图。但是,我希望它与此示例一起工作: 基本上,该示例中的代码适用于cv2.imshow,但是,我希望它适用于cv2.imread,因此它与我要复制的示例兼容 我已经尝试了一些基本的东西,但都没有用,请参考下面的内容 尝试1: printscreen\u pil=Imag
cv2.imshow
成功地显示了它应该显示的屏幕截图。但是,我希望它与此示例一起工作:
基本上,该示例中的代码适用于cv2.imshow
,但是,我希望它适用于cv2.imread
,因此它与我要复制的示例兼容
我已经尝试了一些基本的东西,但都没有用,请参考下面的内容
尝试1:
printscreen\u pil=Imagegrab()
printscreen\u numpy=np.array(printscreen\u pil.getdata(),dtype='uint8')
img=cv2.imread(打印屏幕,0)
带有消息的cv2.imread
上的错误
TypeError:内置操作的参数类型错误
尝试2:
从mss导入mss
mon={'top':160,'left':160,'width':200,'height':200}
sct=mss()
sct.get_像素(周一)
sc.getpixels
上出现错误,消息为AttributeError:'MSS'对象没有属性“get\u pixels”
尝试3:
img_grab=ImageGrab.grab(bbox=(0,0500500))
img=np.array(img\u-grab)
#img=cv2.imread(img)
img=cv2.medianBlur(img,5)
cimg=cv2.CVT颜色(img,cv2.COLOR_GRAY2BGR)
cimg=cv2.cvtColor(img,cv2.COLOR\u GRAY2BGR)上的错误
带有一条很长的消息,我将其总结为(-2:未指定的错误)
和输入图像中通道数无效:'VScn::contains(scn)'其中'scn'为3
有关更多信息,请打开屏幕截图,如果你不写评论,我就给你打那块
尝试4:
cords={'top':40,'left':0,'width':800,'height':640}
使用mss()作为sct:
img=np.阵列(sct.抓取(跳线))
img=cv2.medianBlur(img,5)
cimg=cv2.CVT颜色(img,cv2.COLOR_GRAY2BGR)
cimg=cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)
上的错误以及消息,我将再次总结为输入图像中通道数无效:`VScn::contains(scn)',其中'scn'为4
谢谢大家 根据您的尝试4,使用此定义
cimg
:
cimg = cv2.cvtColor(img, cv2.COLOR_BGRA2GRAY)
砰,把我的截图打印出来!我不确定是否要编辑我的问题。我对它做了一点修改,有没有特别让你困惑的部分?非常感谢。