我的kmeans()
功能失败并显示错误:
OpenCV错误:cv :: kmeans中的断言失败(N> = K),文件C:\ builds \ master_Pac kSlave-win32-vc12-shared \ opencv \ modules \ core \ src \ kmeans.cpp,第231行
我的错误是什么? 'N> = K'必须表示检查Mat rows * cols(length)是否>>集群 - 我的是(我认为)。我的垫有1排,大约80k列。我作为第一个参数(对于kmeans)传递的Mat
是否为空像素/体素数据?我已确认此参数是“折叠”图像(1行,80K列)。所以它不是很空,但它可能都是黑色像素可能是错误的吗?
Mat image = imread("images/jp.png", CV_32F); // The Jurassic Park movie logo
cvtColor(image, image, CV_BGR2RGB);
Mat collapsedImage = image.reshape(1, 1);
collapsedImage.convertTo(collapsedImage, CV_32F);
int clusterCount = 2;
Mat labels, centres;
// Assertion error thrown here
kmeans(collapsedImage, clusterCount, labels,
TermCriteria(TermCriteria::EPS + TermCriteria::COUNT, 10, 1.0),
3, KMEANS_PP_CENTERS, centres);
imshow("flat", collapsedImage); // shows long flat with all black pixels
imshow("image", image);
答案 0 :(得分:0)
好的看起来问题是我的重塑。它应该是:
Mat collapsedImage = image.reshape(1, image.rows * image.cols);