0

您好,我不知道我是否做错了什么,但是当我执行以下操作时:

IplImage *testimage;
testimage = cvCreateImage(cvSize(10,10),IPL_DEPTH_8U,1);
cvThreshold(testimage,testimage,127,127,CV_THRESH_TRUNC);

当我尝试使用无符号短值时,一切正常:

IplImage *testimage;
testimage = cvCreateImage(cvSize(10,10),IPL_DEPTH_16U,1);
cvThreshold(testimage,testimage,127,127,CV_THRESH_TRUNC);

我的程序崩溃了...我使用 opencv 2.4.2 我认为这可能是 opencv 中的错误。不知何故,如果我尝试以下操作:

IplImage *testimage;
testimage = cvCreateImage(cvSize(10,10),IPL_DEPTH_16S,1);
cvThreshold(testimage,testimage,127,127,CV_THRESH_TRUNC);

它不再崩溃

4

2 回答 2

2

它没有崩溃。它正在引发异常,并且由于您没有捕获它,因此您的程序正在中止。OpenCV Thresholding 不支持 16U。

The supported ones are: 8U, 16S and 32F
于 2012-07-16T14:17:27.303 回答
1

有关函数阈值,请参阅 OpenCV 文档。第一个参数是 8 位或 32 位图像
PS 在崩溃消息中,您应该看到崩溃的原因

于 2012-07-16T14:18:56.037 回答