在我们的一个新的网页截图,以确定我们的新的网页之间的差异。为此,我使用Selenium将屏幕截图作为PNG图像:
driver.get_screenshot_as_file(filepath)
一旦我有了这两个截图,我就试着将它们与opencv进行比较:
^{pr2}$然后我要画出矩形,围绕发现的差异。在
当我使用:
thresh = cv2.threshold(diff, 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)[1]
我收到以下错误消息:
OpenCV Error: Assertion failed (src.type() == (((0) & ((1 << 3) - 1)) + (((1)-1) << 3))) in threshold
关闭自适应阈值:
thresh = cv2.threshold(diff, 0, 255, cv2.THRESH_BINARY_INV)[1]
我设法又向前迈了一步。在
但是,检测轮廓的代码失败了:
cnts = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
错误如下:
error: (-210) [Start]FindContours supports only CV_8UC1 images when mode != CV_RETR_FLOODFILL otherwise supports CV_32SC1 images only in function cvStartFindContours_Impl
我开始怀疑问题是否出在使用的文件类型(png vs jpeg)。在
完整的、可复制的代码如下:
imageA = cv2.imread("screenshota.png")
imageB = cv2.imread("screenshotb.png")
grayA = cv2.cvtColor(imageA, cv2.COLOR_BGR2GRAY)
grayB = cv2.cvtColor(imageB, cv2.COLOR_BGR2GRAY)
(score, diff) = compare_ssim(grayA, grayB, full=True)
thresh = cv2.threshold(diff, 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)[1]
cnts = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
抱歉问新手的问题,但有人能给我指出正确的方向吗?在
目前没有回答
相关问题 更多 >
编程相关推荐