使用opencv读取图像并将该图像的数据复制到文本文件中

时间:2017-07-04 06:13:08

标签: c opencv

我正在1通道中读取图像,实际上我需要读取图像的数据,以便我可以对此源数据进行一些图像计算并将结果存储在目标中。 我的目的是将opencv转换为C函数,为此我逐步接近如下:

  1. 阅读图像并需要将图像数据放入文本文件中。
  2. 其他图片的参考数据已经在我的文字中 文件,需要对从中获取的源数据做一些计算 用我已经在文本中的参考数据进行imread。
  3. 图像变形应在源图像上进行并存储 目的地形象。
  4. 代码段如下:

    char* fpath = "C:/Users/Desktop/ImWarping/test.bmp";
    
        for (;;) {
            Mat src;
            src = imread(fpath, 0);
            if (!src.data)
            {
                while (1);
            }
            Mat dst(640, 1280, CV_8UC1);
    
            // Perform Image Warping
            warpIm(mLUT, src.data, dst.data, src.cols, src.rows, dst.cols, dst.rows);
    
            // Display
            imshow("Original Video", src);
            imshow("Corrected Video", dst);
    
            waitKey(100000);
    
            if (waitKey(1) >= 0) {
                break;
            }
    

    任何人都可以提供关于如何将src.data存储到文本文件的输入。 或者那将是很好的,如果任何人请指导我将其转换为纯C函数,我的意思是不应该使用opencv调用。 我试图在ARM处理器上移植它,这是我尝试转换为C函数的基本原因。

    找到解决方案:

    char* fpath = "C:/Users/uids8702/Desktop/LDC_ImageWarping_v1.0/test.bmp";
        for (;;) {
            Mat src;
            src = imread(fpath, 0);
            if (!src.data)
            {
                while (1);
            }
    update_src(src.data);
    

    在函数定义中:

    update_src(uint8_t* srcdata)
    {
        FILE* fpath = fopen("C:/Users/uids8702/Desktop/LDC_ImageWarping_v1.0/dst_data.txt", "w");
        if (fpath == NULL)
        {
            printf("Error opening file\n");
            exit(1);
        }
        static int32_t t = 0, u = 0;
        for (t = 0; t < dstHeight; t++)
        {
            printf("In main loop\n");
            for (u = 0; u < dstWidth; u++)
            {
                printf("dst data is %d\n", *(dstData));
                fprintf(fpath, "%d,", *(dstData));
                dstData++;
            }
    
        }
    }
    

    特别感谢@Mark提出了很好的想法。

0 个答案:

没有答案