将图片转成C数组

将图片转成C数组

图片有RGB三种分量,需要将三种分量共同提取出来,使用opencv和vs2017

首先读取图片,因为该图像为黑白图片,RGB分量相等,故只读写一种通道

#include<opencv2\opencv.hpp> 

#include <ctype.h> 

#include "iostream" 

using namespace std;

using namespace cv;

int main(int argc, char** argv)

{

    Mat img, hsv;

    ofstream outfile("a1.txt");

    //此处更改图片地址 

    img = imread("c1.jpg");//读取图片

    int h = 0;

    for (int i = 0; i<img.rows; i++)

    {

        for (int j = 0; j<img.cols; j++)

        {

         

            //因为该图像为黑白图片,RGB分量相等,故只读写一种通道

            char a[10];//定义char类型的数组

            _itoa_s(img.at<Vec3b>(i, j)[0], a, 16);//该函数可以将int 类型的数据转成8 10 16进制的字符串 读取0通道分量

            if (img.at<Vec3b>(i, j)[0] < 16) {//像素值小于16 16进制变为)0X0_

                outfile << "0X00" << "," << "0X0" << a << "," << "0X0" << a << "," << "0X0" << a << " ";

            }else{

                outfile << "0X00" << "," << "0X" << a << "," << "0X" << a << "," << "0X" << a << " ";

            }

            h++;

            if (h % 4 == 0) {

                outfile << "\n";

            }

        }

    }

}

猜你喜欢

转载自blog.csdn.net/lichen_6398/article/details/81660863