OpenCV imshow 函数似乎在函数外部工作,但不在该函数内部工作(我不认为答案是 waitKey())。为什么会发生这种情况以及如何解决?
我正在学习 2D Gabor 小波。为了进行实验和观察,我首先创建了一个内核可视化工具。这是一段漂亮、愉快的 JavaScript 代码,它向我展示了我正在创建的内核。如果您看一下,我将非常感激:http ://alpersunter.github.io/Gabor2D/
这显然没有告诉我应用内核后生成的图像是什么样子。因此,我安装了 OpenCV (4.1.0) 并在 python 上编写了一个程序(3.6.7 安装在 Ubuntu 18.04 上),据说该程序应该以与我的内核可视化工具类似但更令人印象深刻的方式运行。它不仅要实时计算内核,还要对原始图像及其灰度对应物应用滤波器,最后将它们显示出来。
我使用 cv2.createTrackbar() 创建滑块,在任何参数更改后,轨迹栏都会调用“myValueChanged(newVal)”函数。该函数然后使用更新的参数计算新的内核,最后重新绘制新图像(这是函数 cv2.filter2D(src, -1, kernel) 的返回值)。
现在,如果我在 valueChanged() 函数内调用 imshow() ,一切都会正常。但是,如果我将内核计算、内核应用程序和 cv2.imshow(result) 封装在另一个我称为“redraw()”的函数中,则 imshow 不想工作。
这是我的代码示例:
import cv2
import numpy as np
messi_0_window = "Messi0" # original image
cv2.namedWindow(messi_0_window, cv2.WINDOW_NORMAL)
messi_grey_window = "Messigray" # grayscale of origial
cv2.namedWindow(messi_grey_window, cv2.WINDOW_NORMAL)
messi_1_window = "Messi1" # this will be the result of kernel convolution of rgb messi
cv2.namedWindow(messi_1_window, cv2.WINDOW_NORMAL)
messi_2_window …Run Code Online (Sandbox Code Playgroud) Firefox 和 Chrome 中模糊效果的渲染存在差异。
对于像 Chrome 和 Firefox 这样的小值filter: blur(30px),会产生几乎相同的高斯模糊。
但对于像这些浏览器这样的大值来说,filter: blur(200px)有一个非常明显的差异。
以下是 4 张图片中的示例:(左为 FF,右为 Chrome)
(显示的网站是https://developer.mozilla.org/en-US/docs/Web/CSS/filter-function我在开发工具中将滑块的最大数量编辑为 200)
0px 模糊:相同
30px 模糊:相同
100px 模糊:相同
200px 模糊:不同
看起来 Firefox 只在原始尺寸内应用模糊,而 Chrome 则扩大了模糊应用区域,并从外到内泄漏了“白色”。但这种观察可能是错误的。
我的问题是“如何在跨浏览器中获得一致的模糊效果?”