| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 875 人关注过本帖
标题:遇到一个很囧蛋的问题,关于指针的,已解决
取消只看楼主 加入收藏
hackerjiang
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:地球
等 级:版主
威 望:3
帖 子:780
专家分:111
注 册:2007-4-27
结帖率:100%
收藏
已结贴  问题点数:50 回复次数:1 
遇到一个很囧蛋的问题,关于指针的,已解决
我有这么一段代码,大意是,从摄像头获得照片的指针,然后绘制图像。
并非没有成功,而是在尝试另一种可能更快的方式的时候,遇到了错误。
错得我百思不得其解。

正常的代码
图片附件: 游客没有浏览图片的权限,请 登录注册

图片附件: 游客没有浏览图片的权限,请 登录注册


异常的代码
图片附件: 游客没有浏览图片的权限,请 登录注册

图片附件: 游客没有浏览图片的权限,请 登录注册


按道理来说,两者效果应该是一样的。

正常代码的思路是:
用循环每次选定一个像素,然后投入值。

异常代码的思路是:
首先取得“首像素”的地址,投入值之后偏移地址。

后者速度上应该更快。(我是这么猜想的)
但是为什么后者出现异常了呢?我百思不得其解。
难道这两段代码有我没注意到的区别?

补充说明:

摄像头返回的数据地址格式是32位的RGBA,图像像素是640*480。
一个RGBA像素大小是 ushort (32位)
每个RGBA成员大小是 uchar   ( 8位)
R:红;G:绿;B:蓝;A:透明(这里 A 我们不考虑)

涉及到的定义:

//类型定义
typedef struct _Depth_Color
{
    GLfloat R;
    GLfloat G;
    GLfloat B;
}Depth_Color;

//变量定义
Depth_Color* Video_RGB;
Depth_Color Depth_RGB[640][480];




我有这么一段代码,大意是,从摄像头获得照片的指针,然后绘制图像。
并非没有成功,而是在尝试另一种可能更快的方式的时候,遇到了错误。
错得我百思不得其解。

正常的代码



异常的代码



按道理来说,两者效果应该是一样的。

正常代码的思路是:
用循环每次选定一个像素,然后投入值。

异常代码的思路是:
首先取得“首像素”的地址,投入值之后偏移地址。

后者速度上应该更快。(我是这么猜想的)
但是为什么后者出现异常了呢?我百思不得其解。
难道这两段代码有我没注意到的区别?

补充说明:

摄像头返回的数据地址格式是32位的RGBA,图像像素是640*480。
一个RGBA像素大小是 ushort (32位)
每个RGBA成员大小是 uchar   ( 8位)
R:红;G:绿;B:蓝;A:透明(这里 A 我们不考虑)

涉及到的定义:

//类型定义
typedef struct _Depth_Color
{
    GLfloat R;
    GLfloat G;
    GLfloat B;
}Depth_Color;

//变量定义
Depth_Color* Video_RGB;
Depth_Color Depth_RGB[640][480];






[ 本帖最后由 hackerjiang 于 2011-11-16 19:57 编辑 ]
搜索更多相关主题的帖子: 照片 
2011-11-15 19:59
hackerjiang
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:地球
等 级:版主
威 望:3
帖 子:780
专家分:111
注 册:2007-4-27
收藏
得分:0 
以下是引用embed_xuel在2011-11-15 22:45:34的发言:

手机看这个太费劲了,异常的代码和正常的代码有一点是不一样的,就是每循环一次写入的数组元素不一样,正常的代码是这样的:Depth_RGB[0][0],Depth_RGB[1][0],Depth_RGB[2][0]...,而异常的代码由于用指针取地址,每次自加1,顺序变成了Depth_RGB[0][0],Depth_RGB[0][1],Depth_RGB[0][2]...,你看看是这回事不


我晕,看了你的评论后如梦初醒。

Depth_Color Depth_RGB[640][480];  改成  Depth_Color Depth_RGB[480][640];

大功告成~

(づ ̄ 3 ̄)づ
2011-11-16 14:02
快速回复:遇到一个很囧蛋的问题,关于指针的,已解决
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017785 second(s), 11 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved