UsTK : Ultrasound ToolKit  version 2.0.1 under development (2025-02-01)
tutorial-ultrasonix-qt-grabbing-post-scan-bi-plan.cpp
1 
3 #include <iostream>
4 #include <visp3/ustk_core/usConfig.h>
5 
6 #if (defined(USTK_HAVE_QT5) || defined(USTK_HAVE_VTK_QT)) && (defined(VISP_HAVE_X11) || defined(VISP_HAVE_GDI))
7 
8 #include <QApplication>
9 #include <QtCore/QThread>
10 
11 #include <visp3/ustk_grabber/usNetworkGrabberPostScanBiPlan.h>
12 
13 #include <visp3/gui/vpDisplayGDI.h>
14 #include <visp3/gui/vpDisplayX.h>
15 
16 int main(int argc, char **argv)
17 {
18  // QT application
19  QApplication app(argc, argv);
20 
22  qtGrabber->connectToServer();
23 
24  // qtGrabber->setVerbose(true);
25  // setting acquisition parameters
27  header.probeId = 14; // bi-plan probe id = 15
28  header.slotId = 0; // top slot id = 0
29  header.imagingMode = 23; // bi-plan = 23
30 
31  std::vector<usFrameGrabbedInfo<usImagePostScan2D<unsigned char> > *> grabbedFrame;
32 
33 // Prepare display
34 #if defined(VISP_HAVE_X11)
35  vpDisplayX *display1 = NULL;
36  vpDisplayX *display2 = NULL;
37 #elif defined(VISP_HAVE_GDI)
38  vpDisplayGDI *display1 = NULL;
39  vpDisplayGDI *display2 = NULL;
40 #endif
41  bool displayInit = false;
42 
43  bool captureRunning = true;
44 
45  // sending acquisition parameters
46  qtGrabber->initAcquisition(header);
47 
48  // grab a 640*480 post-scan image
49  qtGrabber->setPostScanMode(true);
50  qtGrabber->setPostScanHeigh(300);
51  qtGrabber->setPostScanWidth(300);
52 
53  qtGrabber->sendAcquisitionParameters();
54  qtGrabber->runAcquisition();
55 
56  std::cout << "waiting ultrasound initialisation..." << std::endl;
57 
58  // our local grabbing loop
59  do {
60  grabbedFrame = qtGrabber->acquire();
61 
62  std::cout << "MAIN THREAD received frame No : " << grabbedFrame[0]->getFrameCount() << " and "
63  << grabbedFrame[1]->getFrameCount() << std::endl;
64 
65  // init display
66  if (!displayInit && grabbedFrame[0]->getHeight() != 0 && grabbedFrame[0]->getWidth() != 0) {
67 #if defined(VISP_HAVE_X11)
68  display1 = new vpDisplayX(*(grabbedFrame[0]));
69  display2 = new vpDisplayX(*(grabbedFrame[1]));
70 #elif defined(VISP_HAVE_GDI)
71  display1 = new vpDisplayGDI(*(grabbedFrame[0]));
72  display2 = new vpDisplayGDI(*(grabbedFrame[1]));
73 #endif
74  displayInit = true;
75  }
76 
77  // processing display
78  if (displayInit) {
79  if (vpDisplay::getClick(*grabbedFrame[0], false) || vpDisplay::getClick(*grabbedFrame[1], false))
80  captureRunning = false;
81  vpDisplay::display(*(grabbedFrame[0]));
82  vpDisplay::display(*(grabbedFrame[1]));
83  vpDisplay::displayText(*grabbedFrame[0], 20, 20, std::string("Click to exit..."), vpColor::red);
84  vpDisplay::displayText(*grabbedFrame[1], 20, 20, std::string("Click to exit..."), vpColor::red);
85  vpDisplay::flush(*(grabbedFrame[0]));
86  vpDisplay::flush(*(grabbedFrame[1]));
87  }
88 
89  } while (captureRunning);
90 
91  qtGrabber->stopAcquisition();
92 
93  if (displayInit) {
94  delete display1;
95  delete display2;
96  }
97 
98  return 0;
99 }
100 
101 #else
102 int main()
103 {
104  std::cout << "You should intall Qt5 (with wigdets and network modules), and display X to run this tutorial"
105  << std::endl;
106  return 0;
107 }
108 
109 #endif
Specific class to grab post-scan frames from the ultrasound station on the network with the bi-plane ...
std::vector< usFrameGrabbedInfo< usImagePostScan2D< unsigned char > > * > acquire()
bool initAcquisition(const usNetworkGrabber::usInitHeaderSent &header)
void setPostScanWidth(int postScanWidth)
void setPostScanHeigh(int postScanHeigh)
void setPostScanMode(bool postScanMode)