断言失败(blockSize % 2 == 1 &&blockSize > 1) in cv::adaptiveThreshold
Assertion failed (blockSize % 2 == 1 && blockSize > 1) in cv::adaptiveThreshold
我正在尝试执行自适应阈值:
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);
但它失败并显示以下消息:
OpenCV Error: Assertion failed (blockSize % 2 == 1 && blockSize > 1) in cv::adaptiveThreshold, file ........opencvmodulesimgprocsrcthresh.cpp, line 797
问题出在哪里?
问题是我为 blockSize 放置了一个偶数值,而它只需要奇数值,因此将其从 20 更改为 21 修复了断言失败:
cv::adaptiveThreshold(mat, mat, 255, cv::ADAPTIVE_THRESH_MEAN_C, cv::THRESH_BINARY, 21, 0);
文档有点提到它,但他们没有明确,如果 blockSize 不奇怪,它会失败:
blockSize – 用于计算像素阈值的像素邻域的大小:3、5、7 等。
如您所见,它没有任何地方说"如果块大小不奇怪,它将失败"。
相关文章:
- netcat command in c++
- Difference in displaying cv2 Mat
- C++ MFC Libraries in Travis CI
- 如何在OpenSSL中从configuration.h.in获取configuration.h
- 创建具有 new in 函数和"this is nullptr"异常的对象
- IN, OUT, INOUT Parameters
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 有人安装"IITB Simplecpp in mac"吗?
- 从 C 样式字符串中删除子字符串 "in place" 在C++代码中
- 如何修复"error: ‘_1’ was not declared in this scope"?
- Softmax Implementation in C++
- 将 out/in out 参数与 if/switch 的 init 语句一起使用
- IF-nesting in c++
- Gurobi GRBModel and GRBmodel in C++
- Tensorflow Hub in C++
- Centos7 g++ "to_string is not in a member of std"
- InitializeCriticalSectionEx Not Located In KERNEL32.Dll
- 将 lambda 表达式传递给 std::function in C++
- @CPPFLAGS@在 Makefile.in 中意味着什么?
- 断言失败(blockSize % 2 == 1 &&blockSize > 1) in cv::adaptiveThreshold