c++ - 如何使用 OpenCV 细化具有粗糙水平线的图像?

标签 c++ opencv image-processing

我有这种具有粗糙水平线的图像,我想将其删除或至少使这些线不真正可见。

enter image description here

使用高斯模糊等平滑技术,我无法获得令人满意的结果,因为线条仍然可见,而且只会降低图像的分辨率。

cv::GaussianBlur(image, result, cv::Size(5, 5), 3);

enter image description here

还有其他更适合我的问题的方法吗?谢谢

最佳答案

正如 @gameon67 建议的那样,您可以使用 1x15 的内核大小来增加 y 方向的模糊并忽略 x 方向的模糊。然而,我觉得对于这种情况,平均滤波比高斯滤波更适合。您可以在官方documentation中阅读更多关于它们的信息。 .

img = cv2.blur(img,(1, 15)) # average filtering

average filtering result

img = cv2.GaussianBlur(img, (1, 15), 0) # Gaussian filtering

gaussian filtering result

关于c++ - 如何使用 OpenCV 细化具有粗糙水平线的图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56249667/

相关文章:

python - 使用 Python OpenCV 从网络摄像头视频中检测白纸上的黑色矩形

python - 形态转换opencv noob问题

image-processing - cvCalculateOpticalFlowFarneback的OPTFLOW_USE_INITIAL_FLOW选项

c++ - Opencv 过滤器导致图像上出现黑色衬里

c++ - qt从原始数据中注册资源

c++ - 简单的 C++ 代码(这里有什么问题?)

c++ - 在图像 OpenCV 上写非常小的字符?

c++ - 将 cv::Mat A 的每个成员与 cv::Mat B 合并,以创建一个带有 [a(x,y),b(x,y)] 的 cv::Mat C

c++ - 在不知道文件名的情况下对外部头文件使用 cmake 的 automoc

c++ - 为什么前向迭代器没有加法赋值运算符?