社区
图形处理/算法
帖子详情
vtk问题之二,解决马上结帖,up有分!
Morgan_ma
2003-10-25 11:38:16
为什么我用vtkBMPReader读入的任何bmp文件,在显示的时候图像表面像蒙了一层黑纱?(图像看得见而且显示正确)
急。。。
...全文
263
23
打赏
收藏
vtk问题之二,解决马上结帖,up有分!
为什么我用vtkBMPReader读入的任何bmp文件,在显示的时候图像表面像蒙了一层黑纱?(图像看得见而且显示正确) 急。。。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
23 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Morgan_ma
2003-10-28
打赏
举报
回复
asett1(asett1),我按照你的代码,一摸一样的,还是同样的问题,我受不了了。。。救命啊。。。
ljzcom
2003-10-28
打赏
举报
回复
关注中。。。
asett1
2003-10-28
打赏
举报
回复
你先试试我的代码吧,用VTKImageViewer比 vtkRenderer 高效简洁,并且可以方便调整window level/center
asett1
2003-10-28
打赏
举报
回复
就这几句话 :
VTKBMPReader* reader = VTKBMPReader::New();
reader->SetFileName("test.bmp");
VTKImageViewer* view = VTKImageViewer::New();
view->SetInput(reader->GetOutput());
View->SetSize(1024,768);
view->GetActor2D()->SetPosition(0,0);//should be calculate by image size
view->Render();
reader->Delete();
view->Delete();
Morgan_ma
2003-10-28
打赏
举报
回复
vtkBMPReader *br = vtkBMPReader::New();
br->SetFileName(dlg.GetPathName());
br->SetNumberOfScalarComponents(3);
br->Update();
//int test = br->GetDepth();
// map to graphics library
vtkImageMapper *map = vtkImageMapper::New();
map->SetInput(br->GetOutput());
// actor coordinates geometry, properties, transformation
vtkActor2D *aBMP = vtkActor2D::New();
aBMP->SetMapper(map);
//aBMP->GetProperty()->SetDisplayLocationToBackground();
// a renderer and render window
vtkRenderer *ren = vtkRenderer::New();
vtkRenderWindow *renWin = vtkRenderWindow::New();
renWin->AddRenderer(ren);
// an interactor
vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
iren->SetRenderWindow(renWin);
// add the actor to the scene
ren->AddActor2D(aBMP);
ren->SetBackground(255,255,255); // Background color white
// render an image (lights and cameras are created automatically)
renWin->Render();
麻烦你帮我看看这个代码有什么问题吗?
Morgan_ma
2003-10-28
打赏
举报
回复
还是不行啊,我试过了,24位的位图还是有这个问题的,asett1(asett1)你是怎么调用显示的?
asett1
2003-10-28
打赏
举报
回复
我刚才试了一下vtkBMPReader,显示8位、24位完全正常,我用的是4.3版
可能是原来的版本有bug,你可以加上 这一句看看
reader->SetNumberOfScalarComponents(3);
看看
,或者试试前面说的几个函数
Morgan_ma
2003-10-28
打赏
举报
回复
呵呵。。。接受批评,分数送上。。。 ^_^
asett1
2003-10-28
打赏
举报
回复
reader没有问题,view->SetColorWindow(230);
view->SetColorLevel(140);就是调整window level/center的,反映到彩色
图象就是亮度、对比度、色饱和度。
你用鼠标就可以直接调整啊,多直观! 或者自己改改这两个数值啊。
钻研能力太差, -_-
重新下载源码,nightly 版的,cmake
Morgan_ma
2003-10-28
打赏
举报
回复
解决了,谢谢,不过能解释一下那两个函数麽?vtk的文档解释的不清楚,还有,我觉得有点治标不治本,因为显示出来的淡蓝色编程了绿色。我怀疑的reader有问题。
另外怎么升级lib?重新下载源码,cmake?
asett1
2003-10-28
打赏
举报
回复
VTKBMPReader* reader = VTKBMPReader::New();
reader->SetFileName("test.bmp");
VTKImageViewer* view = VTKImageViewer::New();
view->SetInput(reader->GetOutput());
view->SetColorWindow(230);
view->SetColorLevel(140);
View->SetSize(1024,768);
view->GetActor2D()->SetPosition(0,0);//should be calculate by image size
view->Render();
reader->Delete();
view->Delete();
再不行只能升级lib了,或者到vtk的mail list里去找,这类问题d都有答案的
Morgan_ma
2003-10-27
打赏
举报
回复
谢谢提示,我再实验一下
Morgan_ma
2003-10-27
打赏
举报
回复
我用vtkBMPReader *br = vtkBMPReader::New();
br->SetFileName(dlg.GetPathName());
得到该图像后,马上调用Depth()函数,返回值是8,说明只能显示256色,那如何才能显示24位的呢?
flinming
2003-10-27
打赏
举报
回复
up
asett1
2003-10-27
打赏
举报
回复
估计是你的bmp位图位数不对。VTKBmpReader缺省是256色的?你的图象可能都是24位的吧。
另外还有 data mask, swap data,big endian/little endian这几个参数设置一下。
如果都没有问题,就是你的image mapper有问题了,调整一下window level/window center。
我用vtkjpegreader 缺省都是只能正确显示256色图象,不知道VTKBmpReader是不是这样?
yaoha2003
2003-10-26
打赏
举报
回复
把黑色乘以xx%,然与你的图相与
wqs6
2003-10-26
打赏
举报
回复
是把像素点的灰度值存到相应的数组中!
Morgan_ma
2003-10-26
打赏
举报
回复
int i,j;
for(j = Extent[2]; j<= Extent[3]; j++)
{
for(i = Extent[0]; i<= Extent[1]; i++)
{
unsigned char* pTemp;
pTemp = (unsigned char*)(imageData->GetScalarPointer(i,j,0));
gray[j*1024+i] = *pTemp;
}
}
这个部分是把象素点一个个存到数组里吗?
wqs6
2003-10-26
打赏
举报
回复
BOOL CCH1_3Doc::OnOpenDocument(LPCTSTR lpszPathName)
{
if (!CDocument::OnOpenDocument(lpszPathName))
return FALSE;
seedNum = 0;
orgPath = lpszPathName;
// TODO: Add your specialized creation code here
if(bmpReader == NULL)
bmpReader = vtkBMPReader::New();
bmpReader->SetFileName(lpszPathName);
bmpReader->Update();
imageData = bmpReader->GetOutput();
//获取图象灰度,图象大小
imageData->GetExtent(Extent);
memset(gray,0,1024*1024);
ASSERT(gray);
int i,j;
for(j = Extent[2]; j<= Extent[3]; j++)
{
for(i = Extent[0]; i<= Extent[1]; i++)
{
unsigned char* pTemp;
pTemp = (unsigned char*)(imageData->GetScalarPointer(i,j,0));
gray[j*1024+i] = *pTemp;
}
}
UpdateAllViews(NULL);
return TRUE;
}
很有可能是unsigned char* 的问题,你试试看吧。
这里有我读文件的源码。
Morgan_ma
2003-10-26
打赏
举报
回复
谢谢。。。我的是Morgan_Ma_MVP@msn.com
加载更多回复(3)
VTK
笔记-
vtk
Camera相机向ViewUp方向旋转90°后遇到的
问题
在工作中使用到了修改相机的旋转角度,获取图像; 或者是使用SetPosition和SetFocalPoint设置与ViewUp相平行...在StackOverflow上有
问题
:Problems using the
VTK
camera function elevation 使用OrthogonalizeViewUp()
【
问题
解决
】No module named
vtk
【
问题
解决
】No module named
vtk
最近在进行CT图像预处理的过程中,python里写了import
vtk
然后提示** No module named
vtk
**
解决
方法 ①在别人那里看到把语句换成import
vtk
modules.all as
vtk
就能
解决
看很多...
Vtk
Camera使用原理及小结
vtk
Camera负责把三维场景投影到二维平面,如屏幕、图像等。 1.
Vtk
camera原理 从图可以看出与相机投影相关的因素主要有: 相机位置:即相机所在的位置,用方法
vtk
Camera::SetPosition()设置。 相机焦点:用...
VTK
之基于Qt的
VTK
应用程序
友好的用户图形界面是应用程序必须的因素之一,对于
VTK
应用程序也是如此。
VTK
附带的程序示例大多数是基于控制台的,但是
VTK
也可以与很多流行的GUI开发工具整合。本文介绍如何把
VTK
(7.1.0)和GUI开发工具Qt(5.x)进行...
VTK
相机类
vtk
Camera原理及用法
vtk
是著名的开源三维渲染库,在三维渲染过程中的一个非常重要的内容就是相机即
vtk
Camera类的设置。在
VTK
中,相机的实质是一个观测点。
VTK
的官方Doc对
vtk
Camera写的十分简略,暗坑很多。在学习和使用
vtk
Camera的过程...
图形处理/算法
19,472
社区成员
50,678
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章