标签:Mat img width uchar height OpenCV int
这里的输入图像是.png类型的原图像,3通道图像,亲测无误。
1 #include "pch.h" 2 #include <iostream> 3 #include <opencv2/opencv.hpp> 4 #include <opencv2/imgproc/types_c.h> 5 using namespace std; 6 using namespace cv; 7 8 /** 图像的宽度*/ 9 const int img_width=60; 10 11 /**图像的高度*/ 12 const int img_height = 60; 13 14 /**数组,存放图片大小*/ 15 uchar p1[img_width * img_height * 3]; 16 17 /**定义一个数组存放matToUchar的返回值*/ 18 uchar *p = new uchar[img_width * img_height * 3]; 19 20 /**将uchar类型的转换为Mat类型*/ 21 Mat ucharToMat(uchar *p2) 22 { 23 Mat img(Size(img_width, img_height),CV_8UC3); 24 for (int i = 0; i < img_width * img_height * 3; i++) 25 { 26 img.at<Vec3b>(i / (img_width * 3), (i % (img_width * 3)) / 3)[i % 3] = p2[i]; 27 } 28 return img; 29 } 30 31 /**将Mat类型的数据转换为uchar类型*/ 32 uchar* matToUchar(Mat img) 33 { 34 for (int i = 0; i < img_width * img_height * 3; i++) 35 { 36 p1[i]= (uchar)img.at<Vec3b>(i / (img_width * 3), (i % (img_width * 3)) / 3)[i % 3]; 37 } 38 return p1; 39 } 40 41 int main() 42 { 43 44 /**读入的原图像*/ 45 Mat img2 = imread("d:/test/new/70.png"); 46 p=matToUchar(img2); 47 /**下面这两行代码目的是输出Mat转化为uchar的值是否正确 48 @(int)目的是将uchar类型的数据转换为int可以直观的看到, 49 uchar的数据输出的是乱码 50 */ 51 for (int i = 0; i < img_width * img_height * 3; i++) 52 cout << (int)p[i] << endl; 53 Mat img = ucharToMat(p); 54 imshow("img",img); 55 waitKey(0); 56 return 0; 57 }
标签:Mat,img,width,uchar,height,OpenCV,int 来源: https://www.cnblogs.com/ybqjymy/p/13098591.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。