本文整理汇总了C++中TImage类的典型用法代码示例。如果您正苦于以下问题:C++ TImage类的具体用法?C++ TImage怎么用?C++ TImage使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了TImage类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: DrawText
void TThumbGeneratorImpl::DrawText(TImage& image, size_t x, size_t y, const wstring& wtext, size_t size) {
float scale = stbtt_ScaleForPixelHeight(&Font, size);
int w, h, xo, yo;
unsigned char* r = image.data(0, 0, 0, 0);
unsigned char* g = image.data(0, 0, 0, 1);
unsigned char* b = image.data(0, 0, 0, 2);
size_t pos = x;
for (size_t i = 0; i < wtext.size(); i++) {
if (iswspace(wtext[i])) {
pos += size * 0.3;
continue;
}
unsigned char* d = stbtt_GetCodepointBitmap(&Font, 0, scale, wtext[i], &w, &h, &xo, &yo);
for (size_t wx = 0; wx < w; wx++) {
for (size_t wy = 0; wy < h; wy++) {
size_t cx = pos + wx + xo;
size_t cy = y + wy + yo + size;
if (cy >= image.height() ||
cx >= image.width())
{
continue;
}
size_t dcord = image.width() * cy + cx;
size_t scord = wy * w + wx;
r[dcord] = d[scord];
g[dcord] = d[scord];
b[dcord] = d[scord];
}
}
pos += w;
}
}
示例2: FITS_tutorial3
// Open a FITS file and retrieve the first plane of the image array
// as a TImage object
void FITS_tutorial3()
{
printf("\n\n--------------------------------\n");
printf("WELCOME TO FITS tutorial #3 !!!!\n");
printf("--------------------------------\n");
printf("We're gonna open a FITS file that contains several image\n");
printf("extensions. The primary HDU contains no data.\n");
printf("Data copyright: NASA\n\n");
if (!gROOT->IsBatch()) {
//printf("Press ENTER to start..."); getchar();
}
// Open extensions 1 to 5 from file
//printf("Press ENTER to see a canvas with all images within the file:"); getchar();
TCanvas *c = new TCanvas("c1", "FITS tutorial #1", 800, 700);
c->Divide(2,3);
for (int i=1; i <= 5; i++) {
TFITSHDU *hdu = new TFITSHDU("sample3.fits", i);
if (hdu == 0) {
printf("ERROR: could not access the HDU\n"); return;
}
TImage *im = hdu->ReadAsImage(0);
c->cd(i);
im->Draw();
delete hdu;
}
}
示例3: hist_to_png_h1
void hist_to_png_h1(TH1F * h_c, TH1F* h_e, TH1F* h_f, TString saveTitle, TString type_string)
{
TCanvas *cPNG = new TCanvas(saveTitle,"",700,500);
TImage *img = TImage::Create();
char * type = type_string.Data();
gStyle->SetOptStat(0);
gPad->SetLogy();
auto legend = new TLegend(0.7,0.7,0.9,0.9);
legend->SetTextSize(0.06);
legend->AddEntry(h_c,"CEMC","l");
legend->AddEntry(h_e,"EEMC","l");
legend->AddEntry(h_f,"FEMC","l");
if(strcmp(type,"spatial")==0)
{
h_e->GetXaxis()->SetTitle("Extrapolation distance from cluster [cm]");
h_e->GetYaxis()->SetTitle("Counts");
}
h_e->Draw();
h_c->Draw("SAME");
h_f->Draw("SAME");
legend->Draw();
img->FromPad(cPNG);
img->WriteImage(saveTitle);
}
示例4: draw
void draw( const TImage aImg, const double& aMaxValue, std::string aBasename)
{
typedef typename TImage::Domain::ConstIterator ConstIteratorOnPoints;
typedef typename TImage::Domain::Point Point;
HueShadeColorMap<double, 2> colorMap(0,aMaxValue);
Board2D b;
b.setUnit ( LibBoard::Board::UCentimeter );
for (ConstIteratorOnPoints it = aImg.domain().begin(), itEnd = aImg.domain().end();
it != itEnd; ++it)
{
Point p = *it;
b << CustomStyle( p.className(), new CustomFillColor( colorMap( aImg(p) ) ) );
b << p;
}
{
std::stringstream s;
s << aBasename << ".eps";
b.saveEPS(s.str().c_str());
}
#ifdef WITH_CAIRO
{
std::stringstream s;
s << aBasename << ".png";
b.saveCairo(s.str().c_str(), Board2D::CairoPNG);
}
#endif
}
示例5: getFileServer
vtkImageData* CImageLoader::load( std::string sFilename, TImagePtr& imagePtr )
{
cerr << "Loading data... ";
TDataFile theData = getFileServer().loadDataSet( sFilename );
if ( theData.first->getType() == typeid( short ) )
{
imagePtr = static_pointer_cast<TImage>( theData.first );
cerr << "Correct" << endl;
}
else
cerr << theData.first->getType().name() << endl;
cerr << "done" << endl;
cerr << "Starting conversion... ";
// Create vtk structured points structure
vtkImageData* sp = vtkImageData::New();
sp->SetDimensions( theData.first->getExtent(0), theData.first->getExtent(1), theData.first->getExtent(2) );
sp->AllocateScalars();
// Assign dataset to structured points
vtkPointData *p=sp->GetPointData();
vtkShortArray* sArray = NULL;
vtkDoubleArray* fArray = NULL;
TField* floatSet = dynamic_cast<TField*>( theData.first.get() );
if ( floatSet != NULL )
{
fArray = vtkDoubleArray::New();
fArray->SetArray(floatSet->getArray(),
theData.first->getExtent(0)*theData.first->getExtent(1)*theData.first->getExtent(2), 1 );
p->SetScalars( fArray );
sp->SetScalarTypeToDouble();
}
else
{
TImage* shortSet = dynamic_cast<TImage*>( theData.first.get() );
if ( shortSet != NULL )
{
short* sA = new short[theData.first->getExtent(0)*theData.first->getExtent(1)*theData.first->getExtent(2)];
short* sAs = sA;
for( TImage::iterator it = shortSet->begin(); it != shortSet->end(); ++it, ++sAs )
*sAs = *it;
sArray = vtkShortArray::New();
sArray->SetArray( sA,
theData.first->getExtent(0)*theData.first->getExtent(1)*theData.first->getExtent(2), 1 );
p->SetScalars( sArray );
sp->SetScalarTypeToShort();
}
else
{
sp->Delete();
throw( FileException( "CVTkHandler - Unknown image format in dataset. Image was not saved" ) );
}
}
sp->UpdateData();
sp->SetSpacing( 1.0, 1.0, 1.0 );
sp->SetOrigin( static_cast<double>( theData.first->getExtent(0) )/ 2.0,
static_cast<double>( theData.first->getExtent(1) )/ 2.0,
static_cast<double>( theData.first->getExtent(2) )/ 2.0 );
cerr << sp->GetNumberOfScalarComponents() << endl;
cerr << "done" << endl;
return sp;
}
示例6: img2pad
void img2pad()
{
// Display image in canvas and pad.
//Author: valeriy Onuchin
TImage *img = TImage::Open("rose512.jpg");
if (!img) {
printf("Could not create an image... exit\n");
return;
}
img->SetConstRatio(kFALSE);
img->Draw("N");
TCanvas *c = gROOT->GetListOfCanvases()->FindObject("rose512jpg");
c->SetFixedAspectRatio();
TCanvas *c = new TCanvas("roses", "roses", 800, 800);
img->Draw("T100,100,yellow");
//img->Draw("T100,100,#556655");
//img->Draw("T100,100");
TImage *i1 = TImage::Open("rose512.jpg");
i1->SetConstRatio(kFALSE);
i1->Flip(90);
TImage *i2 = TImage::Open("rose512.jpg");
i2->SetConstRatio(kFALSE);
i2->Flip(180);
TImage *i3 = TImage::Open("rose512.jpg");
i3->SetConstRatio(kFALSE);
i3->Flip(270);
TImage *i4 = TImage::Open("rose512.jpg");
i4->SetConstRatio(kFALSE);
i4->Mirror(kTRUE);
float d = 0.40;
TPad *p1 = new TPad("i1", "i1", 0.05, 0.55, 0.05+d*i1->GetWidth()/i1->GetHeight(), 0.95);
TPad *p2 = new TPad("i2", "i2", 0.55, 0.55, 0.95, 0.55+d*i2->GetHeight()/i2->GetWidth());
TPad *p3 = new TPad("i3", "i3", 0.55, 0.05, 0.55+d*i3->GetWidth()/i3->GetHeight(), 0.45);
TPad *p4 = new TPad("i4", "i4", 0.05, 0.05, 0.45, 0.05+d*i4->GetHeight()/i4->GetWidth());
p1->Draw();
p1->cd();
i1->Draw();
c->cd();
p2->Draw();
p2->cd();
i2->Draw();
c->cd();
p3->Draw();
p3->cd();
i3->Draw();
c->cd();
p4->Draw();
p4->cd();
i4->Draw();
c->cd();
}
示例7: psview
void psview()
{
// set to batch mode -> do not display graphics
gROOT->SetBatch(1);
// create a PostScript file
TString dir = gROOT->GetTutorialDir();
dir.Append("/graphics/feynman.C");
gROOT->Macro(dir);
gPad->Print("feynman.eps");
// back to graphics mode
gROOT->SetBatch(0);
// create an image from PS file
TImage *ps = TImage::Open("feynman.eps");
if (!ps) {
printf("GhostScript (gs) program must be installed\n");
return;
}
new TCanvas("psexam", "Example how to display PS file in canvas", 600, 400);
TLatex *tex = new TLatex(0.06,0.9,"The picture below has been loaded from a PS file:");
tex->Draw();
TPad *eps = new TPad("eps", "eps", 0., 0., 1., 0.75);
eps->Draw();
eps->cd();
ps->Draw("xxx");
}
示例8: SaveOpenSpectras
void SaveOpenSpectras() {
char *spectra_names[] =
{"CB-Spectra",
"TAPS-BaF2-Spectra",
"TAPS-PbWO4-Spectra",
"TAPS-Veto-Spectra",
"Tagger-Spectra",
"EPT-Spectra",
"PID-Spectra",
"MWPC-Spectra",
"Scaler-Spectra", // aka trigger spectra...
"Livetimes-Spectra",
"Physics-Spectra",
0};
// clean up directory...
printf("\nDelete all PNG images on daq-master:/home/a2cb/OnlineSpectra\n");
stringstream CmdStr;
CmdStr << "rm /home/a2cb/acqu/OnlineSpectra/*.png";
system(CmdStr.str().c_str());
// prepare elog command, note the blank space at every line!
stringstream elog_cmd;
elog_cmd << "echo Run " << gAR->GetRunNumber() << " Online Spectra | ";
elog_cmd << "elog -h elog.office.a2.kph -u a2online a2messung ";
elog_cmd << "-l 'Main Group Logbook' -a Experiment='EPT test 2014-07' ";
elog_cmd << "-a Author='PLEASE FILL IN' -a Type=Routine ";
elog_cmd << "-a Subject='Online Spectra Run " << gAR->GetRunNumber() << "' ";
// Save Spectra
UInt_t i = 0;
char spectra_title[50];
char spectra_filename[100];
while (spectra_names[i]){
sprintf(spectra_title, "%s", spectra_names[i]);
sprintf(spectra_filename, "/home/a2cb/acqu/OnlineSpectra/%02i_%s.png", i, spectra_names[i]);
gSystem->ProcessEvents();
if (gROOT->FindObject(spectra_title)) {
TImage *img = TImage::Create();
img->FromPad((TVirtualPad*)gROOT->FindObject(spectra_title));
img->WriteImage(spectra_filename);
delete img;
elog_cmd << "-f " << spectra_filename << " ";
printf("Spectra saved: %s\n", spectra_title);
} else {
printf("Spectra not found: %s\n", spectra_title);
}
i++;
}
printf("\nPosting all PNG images to the Elog\n");
system(elog_cmd.str().c_str());
printf("\nPLEASE EDIT THE ELOG ENTRY TO MAKE IT COMPLETE!\n\n");
}
示例9: img2pad
void img2pad()
{
TImage *img = TImage::Open("$ROOTSYS/tutorials/image/rose512.jpg");
if (!img) {
printf("Could not create an image... exit\n");
return;
}
img->SetConstRatio(kFALSE);
img->Draw("N");
TCanvas *c = (TCanvas *)gROOT->GetListOfCanvases()->FindObject("rose512jpg");
c->SetFixedAspectRatio();
TCanvas *c1 = new TCanvas("roses", "roses", 800, 800);
img->Draw("T100,100,#ffff00");
/*img->Draw("T100,100,#556655");*/
/*img->Draw("T100,100");*/
TImage *i1 = TImage::Open("$ROOTSYS/tutorials/image/rose512.jpg");
i1->SetConstRatio(kFALSE);
i1->Flip(90);
TImage *i2 = TImage::Open("$ROOTSYS/tutorials/image/rose512.jpg");
i2->SetConstRatio(kFALSE);
i2->Flip(180);
TImage *i3 = TImage::Open("$ROOTSYS/tutorials/image/rose512.jpg");
i3->SetConstRatio(kFALSE);
i3->Flip(270);
TImage *i4 = TImage::Open("$ROOTSYS/tutorials/image/rose512.jpg");
i4->SetConstRatio(kFALSE);
i4->Mirror(kTRUE);
float d = 0.40;
TPad *p1 = new TPad("i1", "i1", 0.05, 0.55, 0.05+d*i1->GetWidth()/i1->GetHeight(), 0.95);
TPad *p2 = new TPad("i2", "i2", 0.55, 0.55, 0.95, 0.55+d*i2->GetHeight()/i2->GetWidth());
TPad *p3 = new TPad("i3", "i3", 0.55, 0.05, 0.55+d*i3->GetWidth()/i3->GetHeight(), 0.45);
TPad *p4 = new TPad("i4", "i4", 0.05, 0.05, 0.45, 0.05+d*i4->GetHeight()/i4->GetWidth());
p1->Draw();
p1->cd();
i1->Draw();
c1->cd();
p2->Draw();
p2->cd();
i2->Draw();
c1->cd();
p3->Draw();
p3->cd();
i3->Draw();
c1->cd();
p4->Draw();
p4->cd();
i4->Draw();
c1->cd();
}
示例10: updateMask
void CExtractRegion::updateMask( TImage& mask, TImage& work, uint index )
{
TImage::iterator in = work.begin();
TImage::iterator out = mask.begin();
while( in != work.end() )
{
if ( (*in) > 0 ) (*out) = index;
++in; ++out;
}
}
示例11: save_image
/**
* \brief saves the plotted image
* Saves the plotter image to the given filename
* \param std::string filename - output filename for the image also determines the image type ( ".png" -> png etc.)
* \return bool on success
*/
bool Plotter::save_image(std::string filename){
try{
TImage *img = TImage::Create();
img->FromPad(canvas);
img->WriteImage(filename.c_str());
return true;
}catch(std::runtime_error &e){
std::cerr << e.what() << std::endl;
return false;
}
}
示例12: computeSize
ulong CExtractRegion::computeSize( TImage& region )
{
ulong size = 0;
TImage::iterator in = region.begin();
while( in != region.end() )
{
if ( (*in) > 0 ) size++;
++in;
}
return size;
}
示例13: CtrlAddItemToCoolBarList_Image
//添加Image控件到CoolBarList,
// pszString必须是动态的(非Static)
// nWidth 为0 -- 自动长度
Int32 CtrlAddItemToCoolBarList_Image(TWindow*pWin, TBarListItem* pListItem, Coord nX, Coord nY, Coord nWidth, Int32 nHeight, TBitmap * pBmp)
{
TRectangle obBtnRec(0,0,0,0);
Int32 nImageId = pListItem->AddCtrl(CTL_CLASS_IMAGE, 0, 0);
TImage* pImage = static_cast<TImage*>(pWin->GetControlPtr(nImageId));
obBtnRec.SetRect(nX, nY, nWidth, nHeight);
pImage->SetBounds(&obBtnRec);
pImage->SetBitmap(pBmp);
pImage->SetEnabled(TRUE);
return nImageId;
}
示例14: FinishVertex
void FinishVertex(VertexDescriptorType target, VertexDescriptorType sourceNode)
{
//OutputHelpers::WriteImage(MaskImage, Helpers::GetSequentialFileName("mask", this->NumberOfFinishedVertices, "png"));
ITKHelpers::WriteImage(MaskImage, Helpers::GetSequentialFileName("mask",
this->NumberOfFinishedVertices, "mha"));
//OutputHelpers::WriteVectorImageAsRGB(Image, Helpers::GetSequentialFileName("output", this->NumberOfFinishedVertices, "png"));
ITKHelpers::WriteImage(Image, Helpers::GetSequentialFileName("output",
this->NumberOfFinishedVertices, "mha"));
ITKHelpers::WriteRGBImage(Image, Helpers::GetSequentialFileName("output",
this->NumberOfFinishedVertices, "png"));
typename TImage::PixelType holeColor;
holeColor.SetSize(Image->GetNumberOfComponentsPerPixel());
holeColor[0] = 255;
holeColor[1] = 0;
holeColor[2] = 0;
MaskOperations::WriteMaskedRegionPNG(Image, MaskImage, Image->GetLargestPossibleRegion(), Helpers::GetSequentialFileName("maskedOutput", this->NumberOfFinishedVertices, "png"),
holeColor);
typedef itk::Image<unsigned char, 2> IndicatorImageType;
IndicatorImageType::Pointer boundaryStatusMapImage = IndicatorImageType::New();
boundaryStatusMapImage->SetRegions(Image->GetLargestPossibleRegion());
boundaryStatusMapImage->Allocate();
// BoostHelpers::WritePropertyMapAsImage(BoundaryStatusMap, boundaryStatusMapImage.GetPointer(),
// Helpers::GetSequentialFileName("boundaryStatusMap",
// this->NumberOfFinishedVertices, "png"));
IndicatorImageType::Pointer validBoundaryNodeImage = IndicatorImageType::New();
validBoundaryNodeImage->SetRegions(Image->GetLargestPossibleRegion());
validBoundaryNodeImage->Allocate();
// BoostHelpers::WriteValidQueueNodesAsImage(BoundaryNodeQueue, BoundaryStatusMap,
// validBoundaryNodeImage.GetPointer(),
// Helpers::GetSequentialFileName("boundaryQueueValidNodes",
// this->NumberOfFinishedVertices, "png"));
IndicatorImageType::Pointer allBoundaryNodeImage = IndicatorImageType::New();
allBoundaryNodeImage->SetRegions(Image->GetLargestPossibleRegion());
allBoundaryNodeImage->Allocate();
// BoostHelpers::WriteAllQueueNodesAsImage(BoundaryNodeQueue, allBoundaryNodeImage.GetPointer(),
// Helpers::GetSequentialFileName("boundaryQueueAllNodes",
// this->NumberOfFinishedVertices, "png"));
this->NumberOfFinishedVertices++;
// std::cout << "Finished node " << this->NumberOfFinishedVertices << std::endl;
}
示例15: SaveImage
// store image inside png
void SaveImage(const TImage& image, const string& destFile) {
vector<unsigned char> result(image.width() * image.height() * 4);
unsigned char* d;
const unsigned char* r = image.data(0, 0, 0, 0);
const unsigned char* g = image.data(0, 0, 0, 1);
const unsigned char* b = image.data(0, 0, 0, 2);
int sp = image.spectrum();
if (sp == 4) {
const unsigned char* a = image.data(0, 0, 0, 3);
for (d = result.data(); d < result.data() + result.size();) {
*(d++) = *(r++);
*(d++) = *(g++);
*(d++) = *(b++);
*(d++) = *(a++);
}
} else if (sp == 3) {
for (d = result.data(); d < result.data() + result.size();) {
*(d++) = *(r++);
*(d++) = *(g++);
*(d++) = *(b++);
*(d++) = 255;
}
} else {
throw UException("failed to save image - wrong type");
}
size_t err = lodepng::encode(destFile, result, image.width(), image.height());
if (err) {
throw UException(lodepng_error_text(err));
}
}