【发布时间】:2025-12-15 09:25:01
【问题描述】:
我正在尝试学习如何使用 OpenCV,并遵循基本教程。 测试简单的cv2.filter2D,我遇到了一个问题……如果内核大小大于某个数字,程序将不会产生任何输出。
所以,我写的是这样的:
img = cv2.imread('images/img.jpg')
kernel = np.ones((n,n),np.float32)/n**2
smoothed = cv2.filter2D(img,-1,kernel)
cv2.imshow('orig', img)
cv2.imshow('smoothed', smoothed)
cv2.waitKey(0)
cv2.destroyAllWindows()
问题是,对于 n>11,没有生成平滑图像(我尝试保存或显示它,但没有得到结果)。尝试了不同大小的各种图像,但总是得到相同的结果。 我在这里做错了什么? 谢谢!
编辑:
好的,简短的更新。
当我从终端执行脚本时(我使用的是带有 OpenCv 4.1.0 的 Ubuntu 18.04),该脚本正常工作,并产生模糊的图像。
问题是当我尝试在 Pycharm 中执行它时,在这种情况下它会抛出错误“进程以退出代码 139 完成(被信号 11 中断:SIGSEGV)”,这应该表明某种......分段问题,如据我了解?
抱歉最初的含糊不清,我有点着急,没有注意到 Pycharm 的消息!
编辑:
新的更新。
听起来很疯狂,我尝试从终端和 Pycharm 运行脚本,但现在它们中的任何一个都不起作用!老实说,我不知道这是怎么可能的,据我所知,我没有改变任何重要的东西!
无论如何,如果它仍然有帮助,从终端运行时 sys.path 是:
['/home/lews/PycharmProjects/opencv/00_basics',
'/home/lews/PycharmProjects/tf_models/research',
'/home/lews/PycharmProjects/tf_models/research/slim',
'/home/lews/PycharmProjects/opencv/00_basics',
'/home/lews/anaconda3/envs/tf2/lib/python37.zip',
'/home/lews/anaconda3/envs/tf2/lib/python3.7',
'/home/lews/anaconda3/envs/tf2/lib/python3.7/lib-dynload',
'/home/lews/anaconda3/envs/tf2/lib/python3.7/site-packages']
而来自 Pycharm 的是:
['/home/lews/PycharmProjects/opencv/00_basics',
'/snap/pycharm-professional/159/helpers/pydev',
'/home/lews/PycharmProjects/opencv',
'/snap/pycharm-professional/159/helpers/pycharm_display',
'/snap/pycharm-professional/159/helpers/third_party/thriftpy',
'/snap/pycharm-professional/159/helpers/pydev',
'/home/lews/anaconda3/envs/tf2/lib/python37.zip',
'/home/lews/anaconda3/envs/tf2/lib/python3.7',
'/home/lews/anaconda3/envs/tf2/lib/python3.7/lib-dynload',
'/home/lews/anaconda3/envs/tf2/lib/python3.7/site-packages',
'/snap/pycharm-professional/159/helpers/pycharm_matplotlib_backend',
'/home/lews/anaconda3/envs/tf2/lib/python3.7/site-packages/IPython/extensions',
'/home/lews/PycharmProjects/opencv']
同样,它们都不起作用,在这两种情况下都不会产生模糊图像。 从终端运行时,它返回错误:
Segmentation fault (core dumped)
正如我所说,使用 Pycharm 时,我明白了
Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)
【问题讨论】:
-
OpenCV 的哪个版本?什么平台? “图像未生成”究竟是什么意思?在这种情况下,函数究竟返回了什么?提供一个可以重现它的图像和一个被指控失败的具体例子。我无法使用许多不同的 OpenCV 构建(在 3.x 和 4.x 范围内)复制超过 11 的大小。
-
@Carlo 听起来环境有问题。从 PyCharm 运行时,python 包装器或其某些依赖项可能不在路径上。您能否在程序开始时打印出
sys.path,并在从终端运行与从 PyCharm 运行时进行比较?
标签: python-3.x opencv filtering