本文整理汇总了C++中VolumeCollection::GetMRI方法的典型用法代码示例。如果您正苦于以下问题:C++ VolumeCollection::GetMRI方法的具体用法?C++ VolumeCollection::GetMRI怎么用?C++ VolumeCollection::GetMRI使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类VolumeCollection
的用法示例。
在下文中一共展示了VolumeCollection::GetMRI方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main( int argc, char **argv ) {
try {
QApplication a( argc, argv );
string fnMRI = "/Users/kteich/work/subjects/bert/mri/orig";
char* sSubjectsDir = getenv("SUBJECTS_DIR");
if ( NULL != sSubjectsDir ) {
fnMRI = string(sSubjectsDir) + "/bert/mri/orig";
}
if ( argc == 2 ) {
fnMRI = argv[1];
}
VolumeCollection vol;
vol.SetFileName( fnMRI );
MRI* mri = vol.GetMRI();
if ( NULL == mri )
exit( 1 );
QtVolumeHistogram* histogram;
histogram = new QtVolumeHistogram( 0, (const char*) "QtVolumeHistogram" );
histogram->SetVolumeSource( &vol );
histogram->SetNumberOfBins( 255 );
histogram->SetMinIgnore( 0 );
histogram->SetMaxIgnore( 20 );
histogram->SetNumberOfMarkers( 4 );
histogram->SetMarkerColor( 0, Qt::red );
histogram->SetMarkerValue( 0, 10 );
histogram->SetMarkerColor( 1, Qt::green );
histogram->SetMarkerValue( 1, 30 );
histogram->SetMarkerColor( 2, Qt::blue );
histogram->SetMarkerValue( 2, 50 );
histogram->SetMarkerColor( 3, Qt::yellow );
histogram->SetMarkerValue( 3, 70 );
histogram->resize( 600, 200 );
a.setMainWidget( histogram );
histogram->show();
QApplication::setGlobalMouseTracking( true );
return a.exec();
} catch ( runtime_error& e ) {
cerr << "failed with exception: " << e.what() << endl;
exit( 1 );
} catch ( exception& e ) {
cerr << "failed with exception: " << e.what() << endl;
exit( 1 );
} catch (...) {
cerr << "failed" << endl;
exit( 1 );
}
exit( 0 );
}
示例2: fnSave
void
VolumeCollectionTester::Test ( Tcl_Interp* iInterp ) {
stringstream ssError;
try {
string fnMRI = "test_data/bertT1.mgz";
VolumeCollection* vol = new VolumeCollection();
vol->SetFileName( fnMRI );
MRI* mri = const_cast<MRI*>(vol->GetMRI());
Assert( (vol->GetTypeDescription() == "Volume"),
"GetTypeDescription didn't return Volume" );
DataManager dataMgr = DataManager::GetManager();
MRILoader mriLoader = dataMgr.GetMRILoader();
Assert( 1 == mriLoader.CountLoaded(),
"CountLoaded didn't return 1" );
Assert( 1 == mriLoader.CountReferences(mri),
"CountReferences didn't return 1" );
char* fnMRIC = strdup( fnMRI.c_str() );
MRI* mriComp = MRIread( fnMRIC );
Assert( (MRImatch( mriComp, mri )), "MRImatch failed for load" );
MRIfree( &mriComp );
// Save it in /tmp, load it, and match it again.
string fnSave( "/tmp/test.mgz" );
vol->Save( fnSave );
VolumeCollection* testVol = new VolumeCollection();
testVol->SetFileName( fnSave );
MRI* testMri = const_cast<MRI*>(testVol->GetMRI());
Assert( (MRImatch( testMri, mri )), "MRImatch failed for load after save");
// Make an ROI and make sure it's a volume ROI.
try {
int roiID = vol->NewROI();
ScubaROIVolume* roi =
dynamic_cast<ScubaROIVolume*>(&ScubaROI::FindByID( roiID ));
roi = NULL;
} catch (...) {
throw( runtime_error("typecast failed for NewROI") );
}
// Try our conversions.
Point3<float> world;
Point3<float> data;
Point3<int> index;
world.Set( -50, 0, -80 );
vol->RASToMRIIndex( world.xyz(), index.xyz() );
{
stringstream ssError;
ssError << "RASToMRIIndex failed. world "
<< world << " index " << index;
Assert( (index.x() == 178 && index.y() == 208 && index.z() == 128),
ssError.str() );
}
// Set a transform that scales the volume up by 2x in the world.
ScubaTransform dataTransform;
dataTransform.SetMainTransform( 2, 0, 0, 0,
0, 2, 0, 0,
0, 0, 2, 0,
0, 0, 0, 1 );
vol->SetDataToWorldTransform( dataTransform.GetID() );
world.Set( -50, 0, -80 );
vol->RASToDataRAS( world.xyz(), data.xyz() );
{
stringstream ssError;
ssError << "RASToDataRAS failed. world "
<< world << " data " << data;
Assert( ((FEQUAL(data.x(),-25)) &&
(FEQUAL(data.y(),0)) &&
(FEQUAL(data.z(),-40))),
ssError.str() );
}
vol->RASToMRIIndex( world.xyz(), index.xyz() );
if ( index.x() != 153 || index.y() != 168 || index.z() != 128 ) {
cerr << "RASToMRIIndex with data transform failed. world "
<< world << " index " << index << endl;
throw( runtime_error( "failed" ) );
}
world.Set( -50, 0, -80 );
VolumeLocation loc( vol->MakeVolumeLocationFromRAS( world.xyz() ) );
if ( !vol->IsInBounds( loc ) ) {
stringstream ssError;
ssError << "IsInBounds failed. world " << world;
//.........这里部分代码省略.........