当前位置:   article > 正文

c++ vector数据转化为opencv mat

c++ vector数据转化为opencv mat
  1. #include <iostream>
  2. #include <vector>
  3. #include <opencv2/opencv.hpp>
  4. using namespace std;
  5. using namespace cv;
  6. void test1()
  7. {
  8. int h = 2;
  9. int w = 3;
  10. cv::Mat im1(h, w, CV_8UC3, cv::Scalar(0, 0, 0));
  11. cv::Mat im2(h, w, CV_8UC3, cv::Scalar(0, 0, 0));
  12. for (int k = 0; k < 3; k++)
  13. {
  14. // im1 accumulate some val
  15. vector<uchar> pixs;
  16. for (int i = 0; i < im1.rows; i++)
  17. {
  18. for (int j = 0; j < im1.cols; j++)
  19. {
  20. im1.at<cv::Vec3b>(i, j)[0] += 10.;
  21. im1.at<cv::Vec3b>(i, j)[1] += 30.;
  22. pixs.push_back(im1.at<cv::Vec3b>(i, j)[0]);
  23. pixs.push_back(im1.at<cv::Vec3b>(i, j)[1]);
  24. pixs.push_back(im1.at<cv::Vec3b>(i, j)[2]);
  25. }
  26. }
  27. // reshape pixs array to Mat im2
  28. for (int i = 0; i < im1.rows; i++)
  29. {
  30. for (int j = 0; j < im1.cols; j++)
  31. {
  32. for (int k = 0; k < 3; ++k)
  33. {
  34. int g = i * im1.cols * im1.channels() + j * im1.channels() + k;
  35. im2.at<cv::Vec3b>(i, j)[k] = pixs[g];
  36. }
  37. }
  38. }
  39. // cout << im1 << endl;
  40. cout << 11111111111 << endl;
  41. cout << im2 << endl;
  42. }
  43. }
  44. int main()
  45. {
  46. test1();
  47. return 1;
  48. }

结果:

11111111111
[ 10,  30,   0,  10,  30,   0,  10,  30,   0;
  10,  30,   0,  10,  30,   0,  10,  30,   0]
11111111111
[ 20,  60,   0,  20,  60,   0,  20,  60,   0;
  20,  60,   0,  20,  60,   0,  20,  60,   0]
11111111111
[ 30,  90,   0,  30,  90,   0,  30,  90,   0;
  30,  90,   0,  30,  90,   0,  30,  90,   0]

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/766956
推荐阅读
相关标签
  

闽ICP备14008679号