赞
踩
- #include <iostream>
- #include <vector>
- #include <opencv2/opencv.hpp>
-
- using namespace std;
- using namespace cv;
-
- void test1()
- {
- int h = 2;
- int w = 3;
- cv::Mat im1(h, w, CV_8UC3, cv::Scalar(0, 0, 0));
- cv::Mat im2(h, w, CV_8UC3, cv::Scalar(0, 0, 0));
-
- for (int k = 0; k < 3; k++)
- {
- // im1 accumulate some val
- vector<uchar> pixs;
- for (int i = 0; i < im1.rows; i++)
- {
- for (int j = 0; j < im1.cols; j++)
- {
- im1.at<cv::Vec3b>(i, j)[0] += 10.;
- im1.at<cv::Vec3b>(i, j)[1] += 30.;
-
- pixs.push_back(im1.at<cv::Vec3b>(i, j)[0]);
- pixs.push_back(im1.at<cv::Vec3b>(i, j)[1]);
- pixs.push_back(im1.at<cv::Vec3b>(i, j)[2]);
- }
- }
-
- // reshape pixs array to Mat im2
- for (int i = 0; i < im1.rows; i++)
- {
- for (int j = 0; j < im1.cols; j++)
- {
- for (int k = 0; k < 3; ++k)
- {
- int g = i * im1.cols * im1.channels() + j * im1.channels() + k;
- im2.at<cv::Vec3b>(i, j)[k] = pixs[g];
- }
- }
- }
-
- // cout << im1 << endl;
- cout << 11111111111 << endl;
- cout << im2 << endl;
- }
- }
-
- int main()
- {
- test1();
- return 1;
- }

结果:
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]
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。