में पंक्तियों का चयन करें, मैं इस क्रम में अपने मैट्रिक्स ए में बी की पंक्तियों 0, 2 और 4 की प्रतिलिपि बनाना चाहता हूं। चलो ए = [ए0, ए 1, ए 2, ए 3, ए 4]^टी, ए_आई पंक्ति-वैक्टर होने के साथ, तो बी होना चाहिए: [ए0, ए 2, ए 4]^टी।नई मैट्रिक्स
नीचे दिया गया कोड जो चाहता है वह करता है लेकिन मुझे आश्चर्य है कि क्या एक सुंदर समाधान है (शायद ईजिन का उपयोग कर रहा है)?
#include <iostream>
#include <vector>
#include <opencv/cv.h>
int main(int argc, char **argv) {
const int num_points = 5;
const int vec_length = 3;
cv::Mat A(num_points, vec_length, CV_32FC1);
cv::RNG rng(0); // Fill A with random values
rng.fill(A, cv::RNG::UNIFORM, 0, 1);
// HACK Ugly way to fill that matrix .
cv::Mat B = cv::Mat(3,vec_length, CV_32FC1);
cv::Mat tmp0 = B(cv::Rect(0,0,vec_length,1));
cv::Mat tmp1 = B(cv::Rect(0,1,vec_length,1));
cv::Mat tmp2 = B(cv::Rect(0,2,vec_length,1));
A.row(0).copyTo(tmp0);
A.row(2).copyTo(tmp1);
A.row(4).copyTo(tmp2);
std::cout << "A: " << A << std::endl;
std::cout << "B: " << B << std::endl;
return 0;
}
यह कमाल है! सीवी :: मैट वैक्टर के रूप में इलाज! नए सी ++ एपीआई के लिए धन्यवाद। – garak