OpenCV中的自适应阈值(版本1 - swig版本)

1 投票
1 回答
2620 浏览
提问于 2025-04-15 21:47

我正在尝试在Python中使用OpenCV库实现自适应阈值处理(使用的是swig绑定,因为我在使用beagleboard,而且交叉编译还没有成功)。我有一张灰度图像(ccg.jpg),并且使用了以下代码:

import opencv
from opencv import highgui
img = highgui.cvLoadImage("ccg.png")
img_bw = opencv.cvCreateImage(opencv.cvGetSize(img), opencv.IPL_DEPTH_8U, 1)
opencv.cvAdaptiveThreshold(img, img_bw, 125, opencv.CV_ADAPTIVE_THRESH_MEAN_C, opencv.CV_THRESH_BINARY, 7, 10)

当我运行这段代码时,出现了这个错误:

RuntimeError:  openCV Error:
    Status=Formats of input arguments do not match
    function name=cvAdaptiveThreshold
    error messgae=
    file_name=cvadapthresh.cpp
    line=122

我还尝试过把源图像和目标图像都设置为同一张灰度图像,但结果还是出现了这个错误:

不支持的格式或格式组合

有没有人能给我一些提示,看看我哪里可能出错了?

1 个回答

2

我不是使用swig接口的用户,但在C语言中,cvLoadImage这个函数默认是以3个通道的RGB格式来加载图像的。如果swig也是这样的话,那么你需要修改你的代码,把img加载为灰度图像(使用CV_LOAD_IMAGE_GRAYSCALE),或者先加载成RGB格式,再通过cvCvtColor这个函数把它转换成灰度图像。

撰写回答