- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
使用这个简单的独立演示:
#include <opencv2/opencv.hpp>
#include <iostream>
int main(int argc, char *argv[]) {
// unsigned char data[] = {1, 0, 1}; // crashes
unsigned char data[] = {1, 1, 0}; // does not crash
cv::Mat1b testImage = cv::Mat1b(3, 1, data);
cv::Mat labeledImage;
cv::Mat stats;
cv::Mat centroids;
int neighborhood = 8;
int componentCount = cv::connectedComponentsWithStats(
testImage, labeledImage, stats, centroids, neighborhood);
std::cout << "componentCount: " << componentCount << std::endl;
return EXIT_SUCCESS;
}
在 gcc 5.4 中,它适用于两个“数据”值。使用 gcc 6.2,它适用于 {1,1,0}
但使用 data = {1,0,0}
转储它:
======= Memory map: ========
00400000-00407000 r-xp 00000000 08:01 15214967 /home/doria/build/Examples/c++/OpenCV/Bug/Bug
00606000-00607000 rw-p 00006000 08:01 15214967 /home/doria/build/Examples/c++/OpenCV/Bug/Bug
020b2000-0216c000 rw-p 00000000 00:00 0 [heap]
7f2608000000-7f2608021000 rw-p 00000000 00:00 0
7f2608021000-7f260c000000 ---p 00000000 00:00 0
7f260cc1d000-7f260cc24000 r-xp 00000000 08:01 10883576 /lib/x86_64-linux-gnu/librt-2.23.so
7f260cc24000-7f260ce23000 ---p 00007000 08:01 10883576 /lib/x86_64-linux-gnu/librt-2.23.so
7f260ce23000-7f260ce24000 r--p 00006000 08:01 10883576 /lib/x86_64-linux-gnu/librt-2.23.so
7f260ce24000-7f260ce25000 rw-p 00007000 08:01 10883576 /lib/x86_64-linux-gnu/librt-2.23.so
7f260ce25000-7f260ce28000 r-xp 00000000 08:01 10883446 /lib/x86_64-linux-gnu/libdl-2.23.so
有什么想法吗?
最佳答案
我要为错误负责……唉。
问题是该算法在图像上以 2x2 block 的形式工作。标签的最大数量是每个 block 一个。不幸的是,如果图像的行数和/或列数为奇数,则对 block 数的估计是错误的。所以要解决这个问题,我们应该这样做:
const size_t Plength = ((img.rows + 1) / 2) * ((img.cols + 1) / 2);
我们今天将为此向 OpenCV 提交拉取请求。加上一组改进的测试。顺便说一下,我们仍在等待包含该算法的并行版本(多核)。
我们已经在 11 月提交了一份
pull request该算法的并行版本(多核)也修复了该错误。
自 2017 年 6 月以来,您可以在 OpenCV 3.3 中找到固定版本。此外,它还包括并行版本。
关于c++ - OpenCV 3.2.0 中的 cv::connectedComponentsWithStats 有时会与 gcc 6.2 一起崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42261401/
我正在尝试使用 Java 版本的 OpenCV(Java 8 和 OpenCV 3.2.0.1)查找连接组件的质心。但是我找不到关于如何利用返回变量的详细文档。我发现这篇文章解释了数据的结构,但它是针
第一次发帖! 我刚刚安装了 python-opencv。根据 python,我的版本是: >>> import cv2 >>> cv2.__version__ '2.4.8' 我的 Ubuntu 版本
您是否必须通过设计cv2.connectedComponentsWithStats黑底白字图像与白底黑字图像相反?做一个和另一个我得到不同的结果。 示例代码: import os import cv2
我正在尝试从二值图像中获取一个或多个 Blob 的质心(最好仅当 Blob 的面积超过阈值时)。 findContours 解决方案有效,但并不完美,FeatureDetetector.SIMPLEB
我正在寻找如何在 Python 中使用 OpenCV 的 connectedComponentsWithStats() 函数的示例。请注意,这仅适用于 OpenCV 3 或更高版本。官方文档仅显示了
使用这个简单的独立演示: #include #include int main(int argc, char *argv[]) { // unsigned char data[] = {1,
我是一名优秀的程序员,十分优秀!