OpenCV中文网站

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

基础问题,对MAT矩阵的unsigned char*操作效果请教

[复制链接]
发表于 2017-1-11 16:03:47 | 显示全部楼层 |阅读模式
               
typedef unsigned char uint8_t;
void* wrCalloc(size_t num, size_t size) {
  return calloc(num, size);
}
请问下面代码对图像进行怎样的操作?没看懂

                Mat mtOri = imread("E:\\pedestrian_complex2.jpg");
                int h = mtOri.rows;        // 图像的行数 height 高度
                int w = mtOri.cols;        // 图像的列数 width 宽度
                int d = 3;                        // 图像的深度 3通道?

                uint8_t* I = (uint8_t*)wrCalloc(h * w * d, sizeof(uint8_t));       
                for (int k = 0; k < d; ++k)
                {
                        for (int c = 0; c < w; ++c)
                        {
                                for (int r = 0; r < h; ++r)
                                {
                                        I[k * w * h + c * h + r] = ((uint8_t*)mtOri.data)[r * w * d + c * d + k];

                                }
                        }
                }

多谢大家!

回复

使用道具 举报

发表于 2017-1-12 13:38:47 | 显示全部楼层
把RGB分开了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-1-12 16:15:17 | 显示全部楼层

为什么这样做呢?虽然这种格式比较奇怪:uint8_t* I,但主要是这个操作没看懂:
I[k * w * h + c * h + r] = ((uint8_t*)mtOri.data)[r * w * d + c * d + k];
这是为了什么呢? 能具体说说吗
回复 支持 反对

使用道具 举报

发表于 2017-1-13 13:45:44 | 显示全部楼层
weiran825 发表于 2017-1-12 16:15
为什么这样做呢?虽然这种格式比较奇怪:uint8_t* I,但主要是这个操作没看懂:
I[k * w * h + c * h + r ...

就是把RGB 分开存放了,带进去试试就知道了
回复 支持 反对

使用道具 举报

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

本版积分规则

手机版|小黑屋|感谢博安盈科技资助本网站|OpenCV中文网站 ( 粤ICP备13079875号-2  

GMT+8, 2017-3-23 10:23 , Processed in 0.100039 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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