使用 cvThreshold 时报告参数时出错



当我使用cvThreshold时,编译器总是报告以下错误。

错误 C2664: "double cvThreshold(const CvArr *,CvArr *,

double,double,int(": 无法将参数 1 从"cv::Mat"转换为"const CvArr *">

这是一个字符分割任务,操作环境VS 2013,Opencv 3.4.1。

int main()
{
std::string pattern_jpg = "C:\Users\WZW\desktop\images\*.jpg"; 
std::vector<cv::String> image_files;
cv::glob(pattern_jpg, image_files);
if (image_files.size() == 0) {
cout << "No image files.jpg" << endl;
return 0;
}
for (unsigned int frame = 0; frame < image_files.size(); ++frame) 
{
double otsuThreshold;
Mat srcImage = cv::imread(image_files[frame], cv::IMREAD_GRAYSCALE);
Mat srcImageGray;                      
Mat otsuImage;
otsuThreshold = OTSU(srcImageGray);
cvThreshold(srcImageGray, otsuImage, otsuThreshold, 255, CV_THRESH_BINARY_INV);

imshow("1", otsuImage);
waitKey(0);

}
return 0;
}

我期望图像的输出。 谢谢

我不确定这是否导致了您的错误,但看起来您从未真正初始化过 srcImageGray。 srcImage 已经是灰度的,所以你可以改用它。

希望有帮助,但我以前从未见过这样的错误消息。

相关内容

  • 没有找到相关文章

最新更新