UsTK : Ultrasound ToolKit  version 2.0.1 under development (2025-02-01)
tutorial-ustk-virtual-server-preScan2D.cpp
1 
3 #include <iostream>
4 #include <visp3/ustk_core/usConfig.h>
5 
6 #if (defined(USTK_HAVE_QT5) || defined(USTK_HAVE_VTK_QT)) && \
7  (defined(VISP_HAVE_X11) || defined(VISP_HAVE_GDI) || defined(VISP_HAVE_OPENCV))
8 
9 #include <QApplication>
10 #include <QStringList>
11 #include <QtCore/QThread>
12 
13 #include <visp3/ustk_core/usImageIo.h>
14 #include <visp3/ustk_grabber/usNetworkGrabberPreScan2D.h>
15 
16 #include <visp3/gui/vpDisplayGDI.h>
17 #include <visp3/gui/vpDisplayOpenCV.h>
18 #include <visp3/gui/vpDisplayX.h>
19 
20 int main(int argc, char **argv)
21 {
22  // QT application
23  QApplication app(argc, argv);
24 
26  qtGrabber->setIPAddress("127.0.0.1"); // local loop, server must be running on same computer
27  qtGrabber->connectToServer();
28 
29  // record option
30  if (qApp->arguments().contains(QString("--output"))) {
31  qtGrabber->activateRecording(
32  qApp->arguments().at(qApp->arguments().indexOf(QString("--output")) + 1).toStdString());
33  }
34 
35  // setting acquisition parameters
37  header.probeId = 0; // 4DC7 id = 15
38  header.slotId = 0; // top slot id = 0
39  header.imagingMode = 0; // B-mode = 0
40 
42 
43 // Prepare display
44 #if defined(VISP_HAVE_X11)
45  vpDisplayX *display = new vpDisplayX();
46 #elif defined(VISP_HAVE_GDI)
47  vpDisplayGDI *display = new vpDisplayGDI();
48 #elif defined(VISP_HAVE_OPENCV)
49  vpDisplayOpenCV *display = new vpDisplayOpenCV();
50 #endif
51 
52  bool captureRunning = true;
53  bool displayInit = false;
54  // qtGrabber->setVerbose(true);
55  // sending acquisition parameters
56  qtGrabber->initAcquisition(header);
57  std::cout << "init success" << std::endl;
58  qtGrabber->runAcquisition();
59 
60  std::cout << "waiting ultrasound initialisation..." << std::endl;
61 
62  // our local grabbing loop
63  do {
64  if (qtGrabber->isFirstFrameAvailable()) {
65  grabbedFrame = qtGrabber->acquire();
66 
67  std::cout << "MAIN THREAD received frame No : " << grabbedFrame->getFrameCount() << std::endl;
68  QString filename = QString("img") + QString::number(grabbedFrame->getFrameCount()) + QString(".xml");
69  usImageIo::write(*grabbedFrame, filename.toStdString());
70 
71  std::cout << *grabbedFrame << std::endl;
72 
73  if (!displayInit) {
74  display->init(*grabbedFrame);
75  qtGrabber->useVpDisplay(display);
76  displayInit = true;
77  }
78  vpDisplay::display(*grabbedFrame);
79  vpDisplay::flush(*grabbedFrame);
80  } else {
81  vpTime::wait(10);
82  }
83  } while (captureRunning);
84 
85  delete display;
86 
87  return app.exec();
88 }
89 
90 #else
91 int main()
92 {
93  std::cout << "You should intall Qt5 (with wigdets and network modules), and display X to run this tutorial"
94  << std::endl;
95  return 0;
96 }
97 
98 #endif
Class to store additionnal informations arriving on the network with ultrasound images grabbed,...
quint32 getFrameCount() const
static void write(const usImageRF2D< short > &rfImage, const std::string &headerFileName, const std::string &imageExtension2D)
Definition: usImageIo.cpp:104
Specific class to grab pre-scan frames from the ultrasound station on the network.
void activateRecording(std::string path)
usFrameGrabbedInfo< usImagePreScan2D< unsigned char > > * acquire()
void useVpDisplay(vpDisplay *display)
bool initAcquisition(const usNetworkGrabber::usInitHeaderSent &header)
void setIPAddress(const std::string &s_ip)
VISP_EXPORT void display(const usOrientedPlane3D &plane, const vpImage< ImageDataType > &I, const vpHomogeneousMatrix &imageMworld, double Xscale=3000, double Yscale=3000, const vpColor &color=vpColor::green)
Display usOrientedPlane3D.