请问这个定义是什么意思? bool * sPoint;//特征点表

月小夏 2009-03-27 11:04:14
bool * sPoint;//特征点表
貌似 sPoint是一个指向表的指针,那怎么引用这个表里面的元素呢?输出这个表里面的所有元素怎么办??

请高手赐教
...全文
164 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
月小夏 2009-03-27
  • 打赏
  • 举报
回复
		////初始化m_initial/////////////////////////////////////////////
HDIB hDIB;DWORD length;
if(m_DIB.NumColors()==0)
length=(m_DIB.m_pBMI->bmiHeader.biWidth*8+31)/32*4*m_DIB.m_pBMI->bmiHeader.biHeight*3;
else
{
length=(m_DIB.m_pBMI->bmiHeader.biWidth*8+31)/32*4*m_DIB.m_pBMI->bmiHeader.biHeight;
sPoint=new bool[length];
for (UINT i=0;i<length;i++)
sPoint[i]=0;
}



在这个地方初始化了以后就是在上面提到的程序段里算是赋值了,就是这一段
////将权不为0的记录下来 即为特征点//////////////// 
DWORD pNum=0;//这里用来记录特征点总个数
for(j=0;j <m_DIB.Height();j++)
for(i=0;i <wB;i++)
{
tp=W+j*wB+i;
if (*tp>0.0)
{// sPoint[(m_DIB.Height()-j-1)*wB+(wB-i-1)]=1;
sPoint[j*wB+i]=1;
pNum++;

}
else
sPoint[j*wB+i]=0;
// sPoint[(m_DIB.Height()-j-1)*wB+(wB-i-1)]=0;


}
jingzhongrong 2009-03-27
  • 打赏
  • 举报
回复
bool的值也就是非0和0两种情况。
一条晚起的虫 2009-03-27
  • 打赏
  • 举报
回复
bool 就true 和 false两个值。
定义bool也就是说只需要两个值就可以表明所有的状态了。
你那个sPoint有没有赋值过?
月小夏 2009-03-27
  • 打赏
  • 举报
回复
////将权不为0的记录下来 即为特征点//////////////// 
DWORD pNum=0;//这里用来记录特征点总个数
for(j=0;j <m_DIB.Height();j++)
for(i=0;i <wB;i++)
{
tp=W+j*wB+i;
if (*tp>0.0)
{// sPoint[(m_DIB.Height()-j-1)*wB+(wB-i-1)]=1;
sPoint[j*wB+i]=1;
pNum++;

//这一段是我自己写的
FILE *fp;

if ((fp=fopen("result2004.txt","w"))==NULL)
{
printf("Can not open the file result.dat\n");
exit(0);
}
fprintf(fp,"%d\n",sPoint[j*wB+i]);
fclose(fp);
fp = NULL;

}
else
sPoint[j*wB+i]=0;
// sPoint[(m_DIB.Height()-j-1)*wB+(wB-i-1)]=0;


}





这个是程序的一部分,说是把特征点存在了表sPoint【length】中
Sharp1070329152 2009-03-27
  • 打赏
  • 举报
回复
用BOOL 是不是和你的具体问题有关呢 想知道你的具体问题是什么 好奇中。。。
月小夏 2009-03-27
  • 打赏
  • 举报
回复
不行啊,打印出来全是0,我用的%f格式打印,是不是不对???

定义的时候为啥要用bool呢?
月小夏 2009-03-27
  • 打赏
  • 举报
回复
好的~~谢谢,我试一下
一条晚起的虫 2009-03-27
  • 打赏
  • 举报
回复
*sPiont或者 sPoint[0] //第一个元素
*(sPoint + 1) 或者 sPoint[1]//第二个元素
jingzhongrong 2009-03-27
  • 打赏
  • 举报
回复
或者判断(bool*)(sPoint+i)是否为0
jingzhongrong 2009-03-27
  • 打赏
  • 举报
回复
*(sPoint+i)或者sPoint[i]
所有元素需要一个长度。
月小夏 2009-03-27
  • 打赏
  • 举报
回复
谢谢大家,问题已经解决了,朋友说的,其实坐标就是(i,j),循环体里面的那个,而sPoint是一个和整幅图像一样大小的表,输出坐标就输出ij就好了,谢谢大家热心帮助,分数大家平分了吧~~~
月小夏 2009-03-27
  • 打赏
  • 举报
回复
sPoint的值只是0或者1,sPoint=new bool[length];这个定义有没有什么别的意思呢?定义sPoint的时候sPoint是个指针呀 bool * sPoint;//特征点表 程序里面这样写的..
那就是也不知道sPoint[j*wB+i]=1;
这句是什么意思了
月小夏 2009-03-27
  • 打赏
  • 举报
回复
先试一下,谢谢啦~~
一条晚起的虫 2009-03-27
  • 打赏
  • 举报
回复
在debug的watch窗口看看,sPoint值到底是什么
或者用下面这段程序输出看看
CString str = "";
for(i = 0; i < length; i++)
{
CString temp;
temp.Format("%d ", sPoint[i]);
str += temp;
}

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧