如何在python中保存selenium和opencv的部分截图

Posted

技术标签:

【中文标题】如何在python中保存selenium和opencv的部分截图【英文标题】:How to save partial screenshot from selenium and opencv in python 【发布时间】:2018-06-14 04:36:37 【问题描述】:

我正在尝试使用 OpenCV 和 selenium 将 html 中的特定元素保存为图像文件。但无法保存文件。

from selenium import webdriver
import cv2
import numpy as np


browser = webdriver.Firefox()
browser.get(<URl with image>)

# Element to be saved
element = browser.find_element_by_id(<id of element>)

png = browser.get_screenshot_as_png()
location = element.location
size  = element.size

nparr = np.frombuffer(png, np.uint8)
img = cv2.imdecode(nparr, cv2.IMREAD_COLOR)


left = location['x']
top = location['y']
right = location['x'] + size['width']
bottom = location['y'] + size['height']

im = img[left:right, top:bottom]

cv2.imwrite('filename.png',im)

目前'filename.png'中没有图片数据通过运行这个脚本。

【问题讨论】:

能否调试lefttoprightbottom中存储的值 &gt;&gt;&gt;print (left, top, right, bottom) &gt;&gt;&gt;755 405 987.0 482.0 rightbottom 转换为整数会更好。你也可以调试print img.shape吗?这里要注意的一件事是您以错误的方式裁剪img numpy 矩阵,正确的做法是im= img[top:bottom, left:right] 感谢您解决了问题。 与How to take partial screenshot with Selenium WebDriver in python?重复 【参考方案1】:

正如@Zdar 所说,我正在编写以下解决方案:

from selenium import webdriver
import cv2
import numpy as np


browser = webdriver.Firefox()
browser.get(<URl with image>)

# Element to be saved
element = browser.find_element_by_id(<id of element>)

png = browser.get_screenshot_as_png()
location = element.location
size  = element.size

nparr = np.frombuffer(png, np.uint8)
img = cv2.imdecode(nparr, cv2.IMREAD_COLOR)


left = location['x']
top = location['y']
right = location['x'] + size['width']
bottom = location['y'] + size['height']

#im = img[left:right, top:bottom]
im = img[top:int(bottom), left:int(right)]
cv2.imwrite('filename.png',im)

【讨论】:

以上是关于如何在python中保存selenium和opencv的部分截图的主要内容,如果未能解决你的问题,请参考以下文章

如何在python中保存selenium和opencv的部分截图

Python Selenium 无法使用 Selenium 和 Python 在#shadow-root (open) 中通过 xpath 找到元素

如何在 Selenium (Python) 中将打开的页面保存为 pdf

如何在 selenium webdriver(python)中禁用 chrome 的“保存密码”弹出窗口

如何使用 selenium 提取类值并保存在 csv 中?

Python+selenium之截图图片并保存截取的图片