社区
图形处理/算法
帖子详情
vtk问题之二,解决马上结帖,up有分!
Morgan_ma
2003-10-25 11:38:16
为什么我用vtkBMPReader读入的任何bmp文件,在显示的时候图像表面像蒙了一层黑纱?(图像看得见而且显示正确)
急。。。
...全文
268
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相平行时,也会出现相机以一种难以理解的将物体转向周围一个度数。 网上有人遇到“当使用Elevation旋转+90°或者-90°时,图像会以一种难以理解的将物体转向周围一个度数。”,跟我遇到的情况不一样; 在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
就能
解决
看很多人都
解决
了但我还是不行 ② (pycharm)点击左上角Files 打开setting,找到python interpreter 把版本换成3.6,或者说在包的目录这里能找到
vtk
就行了,成功~ ...
Vtk
Camera使用原理及小结
观众的眼睛就好比三维渲染场景中的相机,
VTK
则是用
vtk
Camera类来表示三维渲染场景中的相机。
vtk
Camera负责把三维场景投影到二维平面,如屏幕、图像等。 1.
Vtk
camera原理 从图可以看出与相机投影相关的因素主要有: 相机位置:即相机所在的位置,用方法
vtk
Camera::SetPosition()设置。 相机焦点:用方法
vtk
Camera::Se
VTK
之基于Qt的
VTK
应用程序
友好的用户图形界面是应用程序必须的因素之一,对于
VTK
应用程序也是如此。
VTK
附带的程序示例大多数是基于控制台的,但是
VTK
也可以与很多流行的GUI开发工具整合。本文介绍如何把
VTK
(7.1.0)和GUI开发工具Qt(5.x)进行整合。
VTK
之基于Qt的
VTK
应用程序 Qt是跨平台的GUI开发工具,
VTK
也提供了大量的类支持Qt。
VTK
工程是用CMake进行管理的,而Qt自身有qma...
VTK
相机类
vtk
Camera原理及用法
vtk
是著名的开源三维渲染库,在三维渲染过程中的一个非常重要的内容就是相机即
vtk
Camera类的设置。在
VTK
中,相机的实质是一个观测点。
VTK
的官方Doc对
vtk
Camera写的十分简略,暗坑很多。在学习和使用
vtk
Camera的过程中,我走了很多弯路。在我的应用中,我希望能够根据现实中相机的Transform Matrix完全模拟设置
vtk
Camera。下面根据我的经验和理解,介绍一下
vtk
...
图形处理/算法
19,469
社区成员
50,678
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章