我正在尝试做一个自适应阈值:
cv::Mat mat = cv::imread(inputFile);
cv::cvtColor(mat, mat, CV_BGR2GRAY);
cv::adaptiveThreshold(mat, mat, 255, cv::ADAPTIVE_THRESH_MEAN_C, cv::THRESH_BINARY, 20, 0);
cv::imwrite(outputFile, mat);
Run Code Online (Sandbox Code Playgroud)
但它失败了这条消息:
OpenCV Error: Assertion failed (blockSize % 2 == 1 && blockSize > 1) in cv::adaptiveThreshold, file ..\..\..\..\opencv\modules\imgproc\src\thresh.cpp, line 797
Run Code Online (Sandbox Code Playgroud)
问题是什么?
问题是我为blockSize设置了一个偶数值,而它只需要奇数值,所以将它从20改为21修复了断言失败:
cv::adaptiveThreshold(mat, mat, 255, cv::ADAPTIVE_THRESH_MEAN_C, cv::THRESH_BINARY, 21, 0);
Run Code Online (Sandbox Code Playgroud)
文档提到它,但它们并不明确如果blockSize不奇怪它会失败:
blockSize - 用于计算像素阈值的像素邻域的大小:3,5,7等.
正如你所看到的,它无处可说"如果blockSize不是奇数就会失败".
| 归档时间: |
|
| 查看次数: |
1585 次 |
| 最近记录: |