默认头像
路人甲
路人甲
  • 注册日期2006-02-15
  • 发帖数18
  • QQ
  • 铜币170枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:2123回复:5

[求助]如何在VC(AO) 中实现遍历像元与赋值

楼主#
更多 发布于:2006-03-28 21:57

vb中的部分程序:

Create PixelBlock with defined size
Dim pBlock As IPixelBlock
Set pBlock = pRawPixel.CreatePixelBlock(pSize)
' Get the SafeArray associated with the first band
Dim pSafeArray As Variant
pSafeArray = pBlock.SafeArray(0)
' Loop through the SafeArray and set value to each pixel
 Dim I, J As Integer
   For I = 0 To pSize.X - 1
       For J = 0 To pSize.Y - 1
           pSafeArray(I, J) = I + J
       Next J
   Next I

这段代码在VC中应该是怎样的呢?

喜欢0 评分0
默认头像
路人甲
路人甲
  • 注册日期2003-09-15
  • 发帖数10
  • QQ
  • 铜币172枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2006-06-11 15:43
hehe, i will try it following u have said
举报 回复(0) 喜欢(0)     评分
默认头像
路人甲
路人甲
  • 注册日期2006-02-15
  • 发帖数18
  • QQ
  • 铜币170枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2006-04-14 15:32

哎,一直以来就是自己一个人在这个主题下“自言自语”

不过还好

总算弄通了。

这个帖子算是结束了吧。说一下,所以没有值,是因为我在createdataset时数据类型不对

举报 回复(0) 喜欢(0)     评分
默认头像
路人甲
路人甲
  • 注册日期2006-02-15
  • 发帖数18
  • QQ
  • 铜币170枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2006-04-14 09:33

现在我有生成栅格文件

可是在ERDAS 里面打开的时候栅格值为0

而LUT却是有值的

这是事什么原因啊?

举报 回复(0) 喜欢(0)     评分
默认头像
路人甲
路人甲
  • 注册日期2006-02-15
  • 发帖数18
  • QQ
  • 铜币170枚
  • 威望0点
  • 贡献值0点
  • 银元0个
4楼#
发布于:2006-03-29 10:55

我这样尝试,可是结果是象元值都是0.

hr=pRawpixel->Read(pPnt,pPixelBlock);
//  hr=pPixelBlock->PixelDataRef(0);


SAFEARRAY *pa;
hr=SafeArrayAllocDescriptor(2,;pa);//Allocates memory for a safe array descriptor
pa->rgsabound[0].lLbound=0;
pa->rgsabound[1].lLbound=0;
pa->rgsabound[0].cElements=width;
pa->rgsabound[1].cElements=height;
pa->cbElements=sizeof(long);  
hr=SafeArrayAllocData(pa);//Allocates memory for a safe array, based on a descriptor created with SafeArrayAllocDescriptor.

long lDimension[2];


VARIANT pPixelData;

VariantInit(;pPixelData);
pPixelData.vt=VT_VARIANT|VT_ARRAY;

hr=pPixelBlock->get_SafeArray(0,;pPixelData);

long i,j,x;


for(i=0;i<=5;i++)
{ for(j=0;j<=5;j++)
 {
  lDimension[1]=i;//行
  lDimension[0]=j;//列
  x=(i+j) % 255;
  hr=SafeArrayPutElement(pa,lDimension,;x);
 }
}
pPixelData.parray=pa;
hr=pPixelBlock->put_SafeArray(0,pPixelData);

hr=pRawpixel->Write(pPnt,pPixelBlock);

举报 回复(0) 喜欢(0)     评分
默认头像
路人甲
路人甲
  • 注册日期2006-02-15
  • 发帖数18
  • QQ
  • 铜币170枚
  • 威望0点
  • 贡献值0点
  • 银元0个
5楼#
发布于:2006-03-29 10:53

高手帮下忙吧?

举报 回复(0) 喜欢(0)     评分
默认头像

返回顶部