社区
图形处理/算法
帖子详情
vtk问题之二,解决马上结帖,up有分!
Morgan_ma
2003-10-25 11:38:16
为什么我用vtkBMPReader读入的任何bmp文件,在显示的时候图像表面像蒙了一层黑纱?(图像看得见而且显示正确)
急。。。
...全文
316
23
打赏
收藏
vtk问题之二,解决马上结帖,up有分!
为什么我用vtkBMPReader读入的任何bmp文件,在显示的时候图像表面像蒙了一层黑纱?(图像看得见而且显示正确) 急。。。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
8.2 的三维场景中显示中文
这个
问题
卡了我好久周,网上尝试了很多方法,包括使用
vtk
VectorText向量,TexctActor3D设置字体编码,修改FTFont字体源码等等,都没有成功。 可能是版本原因,我看网上的方法基本都是针对
VTK
6.x,要么就是直接没说版本(应该也是6.x,方法用到的那些文件我
VTK
里面甚至都没有)。 最后去读了TexctActor3D源码,从里面找了一个
vtk
FreeTypeStringToImage类才实现了的。看到屏幕上出来的那个汉字时,别提有多高兴了。 目录 编译环境
问题
描述..
VTK
随笔十三:QT与
VTK
的交互
本文以
VTK
读入一幅 JPG 图像,然后在 Qt 界面上使用
VTK
显示该图像为例,演示QT与
VTK
的交互。
VTK
:基于Qt的
VTK
右击菜单实现
前面试过在Qt中实现右击菜单Qt右击菜单 现在尝试在嵌套在Qt中的
VTK
窗口实现右击菜单 原有方式不能成功。原因也很简单:在
VTK
窗口发送的是
VTK
Event 所以Qt中的 contextMenuEvent(QContextMenuEvent *event) 不会处理该事件。所以要另谋出路 翻阅
VTK
文档发现了一个实现右击菜单的实例 贴出来与大家分享: void GUI4::popup(v
【基础篇】Qt+
VTK
开发环境搭建
VTK
网站有大量的程序示例,可以通过手敲代码的形式进行学习。下面就开始使用Qt来完成所有示例。
VTK
开发--错误集锦
1、文字未显示:现象:在
VTK
中使用
vtk
TextActor或
vtk
Actor2D类显示文字,结果文字未显示出来;
解决
方法:在程序上方加上
VTK
_MODULE_INIT(
vtk
RenderingFreeType )2、编译出现错误:no override found for '...'
解决
方法:在程序上方加上#include <
vtk
AutoInit.h>VT...
图形处理/算法
19,464
社区成员
50,678
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章