मैं ओपनसीवी सी ++ के सीवी :: क्षणों का उपयोग करके सेंट्रॉइड खोजने की कोशिश करता हूं। मैं जो भी तर्क प्रस्तुत करता हूं, मैं वापस प्राप्त करता हूं, शून्य हैं। स्पष्ट रूप से मैं कुछ बहुत गलत करता हूँ। कोड के आउटपुट:ओपनसीवी सी ++ सीवी का उपयोग :: क्षण
23 of 500 elements in unit 3
point values 2.976444 18.248287
matrix size 23
moments 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
moments 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
और कोड:
printf("%d of %d elements in unit %d\n",k,number_of_features,i);
cv::Mat x(k, 1, cv::DataType<cv::Point2f>::type);
k=0;
for(int j=0;j <number_of_features;j++) {
if(i == labels.at<int>(j)) {
x.at<cv::Point2f>(k++) = samples.at<cv::Point2f>(i);
}
}
printf("point values %f %f\n", x.at<cv::Point2f>(0).x,x.at<cv::Point2f>(0).y);
cv::Size s=x.size();
printf("matrix size %d\n",s.height);
cv::Moments m=cv::moments(x);
printf("moments %f %f %f %f %f %f %f %f\n",m.m00,m.m01,m.m20,m.m11,m.m02,m.m30,m.m21,m.m03);
double h[7];
cv::HuMoments(m,h);
printf("moments %f %f %f %f %f %f %f\n",h[0],h[1],h[2],h[3],h[4],h[5],h[6]);
अजीब मैं गूगल से किसी भी समान कोड का नमूना नहीं मिल रहा। मैं देखता हूं कि सी शैली दृष्टिकोण है।
धन्यवाद! सबसे पहले मैं आपकी विधि के कार्यों की पुष्टि करता हूं और दूसरा मुझे आपकी बग मिली क्योंकि आपके कोड के साथ काम करना। मैं "जे" के बजाय "i" का उपयोग कर रहा था: x.at (के ++) = samples.at (जे/* बग यहां था * /); –