#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
#define SIZE 244*394*3
uchar* MatToUchar(Mat img)//Mat转uchar
{
uchar* p = new uchar[SIZE];
for (int i = 0; i < SIZE; i++)
{
p[i] = img.at<Vec3b>(i / (244 * 3), (i % (244 * 3) / 3))[i % 3];
}
return p;
}
Mat UcharToMat(uchar* p)
{
Mat img = Mat(394, 244, CV_8UC3);
for (int i = 0; i < SIZE; i++)
{
img.at<Vec3b>(i / (244 * 3), i % (244 * 3) / 3)[i % 3] = p[i];
}
return img;
}
int main()
{
Mat img = imread("C:\\Users\\hzsj457\\Desktop\\lena.jpg");
uchar* p1 = new uchar[SIZE];//开辟内存空间,存储图片中像素点值
uchar* p = MatToUchar(img);
for (int i = 0; i < img.cols * img.rows * 3; i++)
{
//cout << (int)p[i] << endl;
}
Mat img1 = UcharToMat(p);
imshow("img", img);
waitKey(0);
return 0;
}
图片中Mat类型与uchar类型相互转化
最新推荐文章于 2024-07-24 11:51:49 发布