请教各位,问一个关于类型转换的问题,急!

mammoth0626 2011-05-29 05:52:50
最近在做毕业设计,关于图像隐藏的,其中有一个算法,是将灰度值转为二进制,按位进行变换。得到的新二进制灰度值再转为原来的十进制。
我定义了一个BYTE类型的bMap[i]用来将图像进行灰度化,得到的值也是灰度值,现在请问大家,怎么将这个BYTE类型转为二进制数,并且将每一位取出来进行计算?运算完了以后怎么再转回原来的十进制?
请大家帮帮我,比较急!
...全文
45 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
redui 2011-05-29
整数就是整数,在计算机上都是二进制的,所谓的十进制、十六进制也只是显示给人看的,对计算机来说都一个球样
回复
czydxj 2011-05-29
直接用就可以了呀,或&或|来进行位运算!
回复
zgl7903 2011-05-29
[Quote=引用 3 楼 mammoth0626 的回复:]
C/C++ code

BYTE bMap[256];
int i;
for (i = 0; i < 256; i ++)
{
// 计算该颜色对应的灰度值
bMap[i] = (BYTE)(0.299 * lpbmi->bmiColors[i].rgbRed +

0.587 * lpbm……
[/Quote]
数据在计算机中本来就是二进制方式存储的啊 ,
估计LZ是想说图像二值化吧,即把图像变成仅黑和白的吧?
假设灰度范围0-255,设定一个阈值,如127,那么大于127的可以判为白色,反之为黑

回复
mammoth0626 2011-05-29

BYTE bMap[256];
int i;
for (i = 0; i < 256; i ++)
{
// 计算该颜色对应的灰度值
bMap[i] = (BYTE)(0.299 * lpbmi->bmiColors[i].rgbRed +

0.587 * lpbmi->bmiColors[i].rgbGreen +

0.114 * lpbmi->bmiColors[i].rgbBlue + 0.5);

这个bMap[i]里的值就是二进制的吗?
回复
羽飞 2011-05-29
不明白楼主怎么和十进制扯到一块了
获取二进制位用位运算& |就行了
回复
King_hhuang 2011-05-29
BYTE类型怎么还要转二进制啊,本来数据在计算机中都是以二进制存储的啊,值为0x01,0000 0001,1的byte变量本来就是相等的啊

你想取出每一位进行计算,你可以用&(按位与)或者移位(>>)运算符啊
回复
相关推荐
发帖
图形处理/算法
创建于2007-09-28

1.9w+

社区成员

VC/MFC 图形处理/算法
申请成为版主
帖子事件
创建了帖子
2011-05-29 05:52
社区公告
暂无公告