OpenCV中文网站

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 安装 配置
查看: 680|回复: 3

怎么用opencv将二维数组转为图像呢?

[复制链接]
发表于 2017-3-28 22:38:29 | 显示全部楼层 |阅读模式
matlab中有imagesc这个函数,直接将二维矩阵转为图像。可c++没有,于是想到了opencv,今晚上测试了一下,发现不能出图啊。上代码:
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
        unsigned int A[129][254]={0};

        for(int i=0;i<129;i++)
        {
          for(int j=0;j<254;j++)
                  A[i][j]=i;

        }
       
        Mat frame=Mat(129,254,CV_8U);
        memcpy(frame.data,A,sizeof(unsigned int));
        imshow("tld",frame);
        waitKey(10000);

}



这段函数哪里有问题呢?结果显示了一张纯灰色的图片,没有任何灰度起伏,我感觉我把哪里搞错了。
回复

使用道具 举报

发表于 2017-3-28 23:07:34 | 显示全部楼层
本帖最后由 smallyouyou 于 2017-3-28 23:08 编辑

型態是CV_8U 所以你的int要改成char
然後memcpy後面你忘記乘於陣列大小了
  1. int main()
  2. {
  3.         unsigned char A[129][254]={0};

  4.         for(int i=0;i<129;i++)
  5.         {
  6.           for(int j=0;j<254;j++)
  7.                   A[i][j]=i;

  8.         }

  9.         Mat frame=Mat(129,254,CV_8U);
  10.         memcpy(frame.data,A,sizeof(unsigned char)*129*254);
  11.         imshow("tld",frame);
  12.         waitKey(10000);
  13. }
复制代码
回复 支持 反对

使用道具 举报

发表于 2017-3-29 09:40:42 | 显示全部楼层
直接在构造函数中引用二维数组就行啊,Mat image(129,254,CV_8U,A)
回复 支持 反对

使用道具 举报

发表于 2018-5-14 10:55:02 | 显示全部楼层
请问楼主这个数组是写在哪里的啊,我现在的数据在文本里面,不知道该如何调用
回复 支持 反对

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|blog|OpenCV中文网站 ( 粤ICP备13079875号-2

GMT+8, 2018-10-16 22:34 , Processed in 0.027759 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表