vtk学习-报错-vtkJPEGReader cannot open jpeg file

/**********************************************************************

  文件名: 2.2_TextureExample.cpp
  Copyright (c) 张晓东, 罗火灵. All rights reserved.
  更多信息请访问: 
    http://www.vtkchina.org (VTK中国)
	http://blog.csdn.net/www_doling_net (东灵工作室) 

**********************************************************************/

#include <vtkSmartPointer.h>
#include <vtkJPEGReader.h>
#include <vtkTexture.h>
#include <vtkPlaneSource.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkRenderWindowInteractor.h>

//测试文件:data/texture.jpg
int main(int argc, char* argv[])
{
	/*if (argc < 2)
	{
		std::cout<<argv[0]<<" "<<"TextureFile(*.jpg)"<<std::endl;
		return EXIT_FAILURE;
	}*/
	vtkSmartPointer< vtkJPEGReader > reader = 
		vtkSmartPointer< vtkJPEGReader >::New();
	//reader->SetFileName(argv[1]);
	reader->SetFileName("coman.jpeg");
	
	vtkSmartPointer< vtkTexture > texture = 
		vtkSmartPointer< vtkTexture >::New();
	texture->SetInputConnection( reader->GetOutputPort() );
	texture->InterpolateOn();

	vtkSmartPointer< vtkPlaneSource > plane = 
		vtkSmartPointer< vtkPlaneSource >::New();
	vtkSmartPointer< vtkPolyDataMapper > mapper = 
		vtkSmartPointer< vtkPolyDataMapper >::New();
	mapper->SetInputConnection( plane->GetOutputPort() );

	vtkSmartPointer< vtkActor > actor = 
		vtkSmartPointer< vtkActor >::New();
	actor->SetMapper( mapper );
	actor->SetTexture( texture );

    vtkSmartPointer<vtkRenderer> renderer = 
      vtkSmartPointer<vtkRenderer>::New();
    renderer->AddActor( actor );
    renderer->SetBackground( 1.0, 1.0, 1.0);
  
    vtkSmartPointer<vtkRenderWindow> renWin = 
      vtkSmartPointer<vtkRenderWindow>::New();
    renWin->AddRenderer( renderer );
	renWin->SetSize( 640, 480 );
	renWin->Render();
	renWin->SetWindowName("TextureExample");
   
    vtkSmartPointer<vtkRenderWindowInteractor> iren = 
      vtkSmartPointer<vtkRenderWindowInteractor>::New();
    iren->SetRenderWindow(renWin);
	iren->Initialize();
    iren->Start();
	
	return EXIT_SUCCESS;
}

在这里插入图片描述
报错如下:
在这里插入图片描述
思路:既然读取不到文件,猜测可能是两个方面的问题,一个是文件路径错误,导致读取到的是空的图片文件,二是文件读取器vtkJPEGReader适合读取的文件类型和实际提供的文件类型不一致。
最终结果:发现将图片路径替换为绝对路径之后,程序能够正常运行,原因是VS2019的Source Files文件夹不是程序运行的目录,只是源代码所在的目录,所以只有把图片放在程序运行目录下才是正确的,而VTK的程序运行目录即为cmake编译后的bin文件夹(这个文件夹通常命名为bin, 位置由自己决定); 而JPEG读取器是能够读取jpg和jpeg这两种类型的文件的,实际没有任何区别。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值