zoukankan      html  css  js  c++  java
  • OpenCV uchar和Mat之间的相互转换

    这里的输入图像是.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 }
  • 相关阅读:
    Android学习之简单的数据存储
    Android学习Tabhost、gallery、listview、imageswitcher
    Android学习之菜单
    Android学习之Notification
    android自定义控件
    Android简单登录系统
    Android学习自定义Dialog
    Android学习之DialogFragment
    Intent组件
    git
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/13098591.html
Copyright © 2011-2022 走看看