[FPGA] 从FPGA的文件中读取像素值,并显示储存为bmp图像-opencv

[复制链接]
671|0
 楼主| feihufuture 发表于 2020-9-8 15:55 | 显示全部楼层 |阅读模式

  1. #include "StdAfx.h"
  2. #include <opencv2/opencv.hpp>
  3. #include <opencv2/imgproc/imgproc.hpp>
  4. #include <opencv2/highgui/highgui.hpp>
  5. #include <opencv2/core/core.hpp>
  6. #include <vector>
  7. #include<ppl.h>
  8. using namespace cv;
  9. using namespace std;
  10. using namespace concurrency;
  11. #define WINDOW_NAME "[程序窗口]"

  12. #include<stdlib.h>
  13. #include<time.h>
  14. #include<math.h>
  15. #include<stdio.h>
  16. #include <mutex>

  17. // for filelisting
  18. #include <stdio.h>
  19. #include <io.h>
  20. // for fileoutput
  21. #include <string>
  22. #include <fstream>
  23. #include <sstream>
  24. #include<iostream>

  25. #define IMAGE_SIZE 256*256
  26. #define IMAGE_WIDTH 256
  27. #define IMAGE_HEIGHT 256
  28. #define MAX_LINE 4*IMAGE_SIZE+1   //+1是因为最后一个字符不会读取

  29. int main()
  30. {               

  31.        
  32.         //生成模版集合
  33.         vector<float> scaleSet;
  34.         vector<float> angleSet;
  35.         vector<Mat> modelImageSet;
  36.         vector<int> modelPointSet;
  37.         vector<int> row, col;
  38.         vector<float> scale, angle, score;

  39.         /*
  40.         //待检测图片
  41.         Mat srcImage=imread("img/11.jpg");
  42.         Mat cannysrcImage, tempsrcImage;
  43.         blur(srcImage, srcImage,Size(3,3) );//blur的作用是对输入的图像src进行均值滤波
  44.         Canny(srcImage, cannysrcImage, 100, 200, 3, false);
  45.         imshow("原始图2", srcImage);
  46.         waitKey();
  47.         */

  48.        
  49.         char buf[MAX_LINE];  /*缓冲区*/
  50.         FILE *fp;            /*文件指针*/
  51.         int len;             /*行字符个数*/
  52.         if ((fp = fopen("E:\\CANNY\\CANNY\\CANNY.sim\\out_file0.txt", "r")) == NULL)
  53.         {
  54.                 perror("fail to read");
  55.                 exit(1);
  56.         }
  57.         if (fgets(buf, MAX_LINE, fp) != NULL)
  58.         {
  59.                 len = strlen(buf); /*从指定的流 stream 读取一行,并把它存储在str所指向的字符串内。当读取(n - 1)个字符时,或者读取到换行符时,或者到达文件末尾时,它会停止*/
  60.                 printf(":::::::%d\n", len);
  61.                 /*for (int i = 0; i < len; i++)
  62.                 {
  63.                         printf("%c\n", buf[i]);
  64.                 }*/
  65.         }

  66.         int image[IMAGE_SIZE];
  67.         int CombData;
  68.         for (int i = 0; i < len; i++)
  69.         {
  70.                 int j = i % 4;
  71.                 int k = i / 4;
  72.                 int hundred, ten, unit;
  73.                 if (j == 1)
  74.                 {
  75.                         if (buf[i] == 32) hundred = 0;//空格
  76.                         else hundred = buf[i] - 48;
  77.                         //printf("hundred:%d\n", hundred);
  78.                 }
  79.                 else if (j == 2)
  80.                 {
  81.                         if (buf[i] == 32) ten = 0;
  82.                         else ten = buf[i] - 48;
  83.                         //printf("ten:%d\n", ten);
  84.                 }
  85.                 else if (j == 3)
  86.                 {
  87.                         unit = buf[i] - 48;
  88.                         //printf("unit:%d\n", unit);
  89.                         CombData = hundred * 100 + ten * 10 + unit;
  90.                         image[k] = CombData;
  91.                 }
  92.         }
  93.        

  94.         //for (int i = 0; i < 10; i++)
  95.         //{
  96.         //        printf("%d\n", image[i]);
  97.         //}

  98.         #define IMAGE_WIDTH 256
  99.         #define IMAGE_HEIGHT 256


  100.         Mat ImageToShow = Mat(IMAGE_HEIGHT, IMAGE_WIDTH, CV_8UC1);

  101.         for(int i=0;i<IMAGE_HEIGHT;i++)
  102.                 for (int j = 0; j < IMAGE_WIDTH; j++)
  103.                 {
  104.                         ImageToShow.at<uchar>(i, j) = image[i*IMAGE_WIDTH + j];
  105.                 }
  106.         imshow("原始图", ImageToShow);
  107.         imwrite("E:\\CANNY\\CANNY\\CANNY.sim\\output.bmp", ImageToShow);
  108.         waitKey();


  109.         //char buf[max_line];  /*缓冲区*/
  110.         //file *fp;            /*文件指针*/
  111.         //int len;             /*行字符个数*/
  112.         //if ((fp = fopen("e:\\canny\\canny\\canny.sim\\out_file0.txt", "w")) == null)
  113.         //{
  114.         //        perror("fail to read");
  115.         //        exit(1);
  116.         //}
  117.         //char name[10] = { 55 ,56, 13 , 14 , 15 , 16 , 17 , 18 , 19 , '\0'};
  118.         //fputs(name, fp);
  119.         //return 0;

  120.        

  121. }





您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:WX:feihu612 免费合作开发ECAT主从站

171

主题

1029

帖子

101

粉丝
快速回复 在线客服 返回列表 返回顶部