 |
ImageD
v2_7_5 (24.06.22)
ImageD is an image processing software designed for rapid prototyping and implementing algorithms and solutions for science, research and teaching.
|
Go to the documentation of this file.
27 #include <QGraphicsScene>
28 #include <QGraphicsView>
31 #include <QMessageBox>
32 #include <QFileDialog>
35 #include <QElapsedTimer>
43 #include <opencv2/core/core.hpp>
44 #include <opencv2/highgui/highgui.hpp>
45 #include <opencv2/imgproc/imgproc.hpp>
67 D_Viewer(QGraphicsView *GV_ui, QString viewer_name);
68 D_Viewer(QGraphicsView *GV_ui, QDir default_dir);
69 D_Viewer(QGraphicsView *GV_ui, QDir default_dir, QString viewer_name);
72 void set_GV(QGraphicsView *GV_ui);
73 void set_CV(QtCharts::QChartView *CV_ui);
74 void set_Name(QString viewer_name);
78 void connect_PointRecord(
D_Viewer *viewer);
84 QImage *
pQI() {
return &QI_View;}
85 QPixmap *
pPX() {
return &PX_View;}
87 QGraphicsView *
pGV() {
return GV_View;}
96 double img_val_range();
105 QString
name() {
return QS_Name;}
108 void Init (QGraphicsView *GV_ui);
111 void Proc_ShowImgOrPlot ();
112 void Proc_MA_2_QI ();
113 void Proc_DrawOverlay2QI ();
114 int Proc_MA_2_QI_NoZoom_NoVistrafo ();
115 int Proc_MA_2_QI_NoZoom_ButVistrafo ();
116 int Proc_MA_2_QI_Zoom_ButNoVistrafo ();
117 int Proc_MA_2_QI_Zoom_And_Vistrafo ();
118 void Proc_QI_2_PX ();
119 void Proc_PX_Scale ();
120 void Proc_PX_2_SC ();
124 bool Is_MouseOverScene (
int x,
int y);
125 bool CalcRelativePos (
int x,
int y);
126 bool Scene2OriginalXY_Scale (
int *x,
int *y);
127 bool Scene2OriginalXY_Offset (
int *x,
int *y);
128 bool Scene2OriginalXY_Transform (
int *x,
int *y);
132 void ERR (
int err, QString func =
"not specified", QString detail =
"not specified");
137 void Zoom_Pos (
int x,
int y);
143 void ClickRecord_DrawOverlay ();
144 vector<Point> ScaleContour (vector<Point> vContour,
double scale,
Point scaled_offset);
145 vector<vector<Point>> ScaleContours (vector<vector<Point>> vvContours,
double scale,
Point scaled_offset);
152 void Set_Image (
Mat *MA_new);
153 void Update_Image (
Mat *MA_new);
154 void Update_Image ();
158 QString Save_Image_Dialog ();
159 QString Save_Image_Dialog (QString path_default);
160 QString Save_Image ();
161 QString Save_Image (QString path);
164 void Set_ViewerMode (
int mode);
165 void Set_Transformation_Mode (
bool smooth);
166 void Set_Aspect_Mode (
bool keep);
182 void Set_Zoom (
double x_rel,
double y_rel,
double factor);
183 void Set_Zoom_Extern (
double x_rel,
double y_rel,
double factor);
184 void Set_ZoomReset ();
185 void Set_ZoomReset_Extern ();
189 void MouseMoved (
int x,
int y);
190 void MouseClicked (
int x,
int y);
191 void MouseClicked_Left (
int x,
int y);
192 void MouseClicked_Right (
int x,
int y);
193 void MouseClicked_Mid (
int x,
int y);
201 void ClickRecord_Start ();
202 void ClickRecord_Start_RecieveOnly ();
203 bool ClickRecord_Record (
Point P);
204 bool ClickRecord_Record (
int x,
int y);
205 bool ClickRecord_Record_RecieveOnly (
Point P);
206 bool ClickRecord_Record_RecieveOnly (
int x,
int y);
207 void ClickRecord_Clear ();
208 void ClickRecord_Clear_RecieveOnly ();
209 void ClickRecord_Quit ();
210 void ClickRecord_Quit_RecieveOnly ();
211 vector<Point> ClickRecord_GetPoints ();
212 vector<Point> ClickRecord_GetPoints (
double scale_factor,
Point scaled_offset);
213 vector<Point> ClickRecord_GetPoints_Ellipse (
bool limit_by_img_size =
true);
214 vector<Point> ClickRecord_GetPoints_Ellipse (
double scale_factor,
Point scaled_offset,
bool limit_by_img_size =
true);
215 vector<Point> ClickRecord_GetPoints_Polygon ();
216 vector<Point> ClickRecord_GetPoints_Polygon (
double scale,
Point scaled_offset);
217 vector<Point> ClickRecord_GetPoints_ConvexHull ();
218 vector<Point> ClickRecord_GetPoints_ConvexHull (
double scale,
Point scaled_offset);
219 vector<vector<Point>> ClickRecord_GetPoints_Circles (
double radius);
220 vector<vector<Point>> ClickRecord_GetPoints_Circles (
double radius,
double scale,
Point scaled_offset);
223 void ClickRecord_ChangeOverlayColor (QColor color);
224 void ClickRecord_ChangeOverlayPointDiameter(
int d);
225 size_t ClickRecord_RecordedPointsCount();
263 void Zoomed (
double x_rel,
double y_rel,
double factor);
294 QtCharts::QChartView *CV_View;
295 bool state_CV_set =
false;
297 QString QS_DimX =
"X";
298 double PlotX_Offset = 0;
299 double PlotX_Step = 1;
300 QString QS_DimY =
"Data";
313 QGraphicsView *GV_View;
317 QFileInfo FI_LastSaved;
324 Qt::TransformationMode TransMode;
325 Qt::AspectRatioMode AspectMode;
327 double cursor_x_rel = 0;
328 double cursor_y_rel = 0;
329 int zoom_offset_x = 0;
330 int zoom_offset_y = 0;
334 bool zoom_active =
false;
335 bool zoom_changed =
false;
336 bool zoom_connection_active =
true;
337 double zoom_step = 1.10;
338 double zoom_factor_cur = 1.00;
339 double zoom_factor_old = 1.00;
340 double zoom_factor_min = 0.01;
341 vector<D_Viewer*> v_ConnectedViewersZoom;
343 bool vis_trafo_active =
false;
344 double vis_trafo_in_min = 0;
345 double vis_trafo_in_max = 255;
346 double vis_trafo_gamma = 1.0;
347 double vis_trafo_center = 0.0;
348 double vis_trafo_divisor = 1.0;
349 double vis_trafo_anchor = 0;
350 double vis_trafo_range = 1;
358 QString QS_Name =
"Viewer";
361 QElapsedTimer QET_view;
362 unsigned int time_view;
363 QElapsedTimer QET_convert;
364 unsigned int time_convert;
367 bool click_recording_active =
false;
368 vector<Point> vClicksRecorded;
369 vector<D_Viewer*> v_ConnectedViewersClickRecord;
370 QColor ClickRecord_OverlayColor = Qt::white;
371 double ClickRecord_PointDiameter = 1;
void ClickRecordSignal_GetPoints_ConvexHull(vector< Point > vPointsConvexHull)
cv::Mat Mat
Definition: d_opencv_typedefs.h:28
@ ER_okay
Definition: d_enum.h:133
static QString Type_of_Mat(Mat *pMA_In)
Definition: d_img_proc.cpp:363
QPixmap * pPX()
Definition: d_viewer.h:85
double zoom_x_rel()
Definition: d_viewer.h:101
void Update_View()
D_Viewer::Update_View Starts the workflow to show an image.
Definition: d_viewer.cpp:2096
void ClickRecordSignal_Ellipse(RotatedRect ellipse)
static int Visualize_to8bit(Mat *pMA_Out, Mat *pMA_In, int mode_crop, int mode_trafo, int mode_anchor, int mode_range, double val_anchor, double val_range, double val_min, double val_max, double val_gamma, double val_center, double val_scale, bool keep_min_max=false, int mode_complex=c_COMPLEX2REAL_RE_IM)
Definition: d_img_proc.cpp:5082
void Time_View_Update(unsigned int time_ms)
cv::Vec3i Vec3i
Definition: d_opencv_typedefs.h:54
unsigned int img_width()
Definition: d_viewer.h:92
void Set_VisTrafo_Anchor(double anchor=127.5)
Definition: d_viewer.h:175
void Set_Zoom(double x_rel, double y_rel, double factor)
D_Viewer::Set_Zoom Set zoom parameters and apply zoom.
Definition: d_viewer.cpp:2249
void Set_VisTrafo_Mode_Complex(int mode=c_COMPLEX2REAL_RE_IM)
Definition: d_viewer.h:181
void ClickRecordSignal_GetPoints_Polygon(vector< Point > vPointsPolygon)
void Image_Size_Changed()
cv::Point2f Point2f
Definition: d_opencv_typedefs.h:37
cv::Vec2i Vec2i
Definition: d_opencv_typedefs.h:48
void ClickRecord_Start()
Definition: d_viewer.cpp:2431
void Set_VisTrafo_ActiveBool(bool active=true)
Definition: d_viewer.h:169
void Set_Aspect_Mode(bool keep)
D_Viewer::Set_Aspect_Mode Set aspect ratio handling mode to fit an image to a viewer of different siz...
Definition: d_viewer.cpp:2227
void ClickRecord_Quit_RecieveOnly()
Definition: d_viewer.cpp:2529
cv::Vec3d Vec3d
Definition: d_opencv_typedefs.h:52
QString Type_MA()
Definition: d_viewer.h:90
cv::Vec4d Vec4d
Definition: d_opencv_typedefs.h:58
void MouseClickedMid_Pos(int x, int y)
The D_Viewer class Display images (Mat) in QGraphicsView in the user interface.
Definition: d_viewer.h:58
void MouseMoved_Value(QString val)
void Time_Image_Cvt(unsigned int time_ms)
cv::Vec2w Vec2w
Definition: d_opencv_typedefs.h:50
cv::Vec4s Vec4s
Definition: d_opencv_typedefs.h:61
const int LINE_8
Definition: d_opencv_typedefs.h:141
cv::Vec4f Vec4f
Definition: d_opencv_typedefs.h:59
@ c_VIEWER_MODE_IMG
Definition: d_enum.h:375
void ClickRecord_Clear_RecieveOnly()
Definition: d_viewer.cpp:2515
QString name()
Definition: d_viewer.h:105
void Set_VisTrafo_SpreadInMin(double spread_min=0)
Definition: d_viewer.h:171
int MousePos_Y()
Definition: d_viewer.h:198
bool ClickRecord_Record_RecieveOnly(Point P)
Definition: d_viewer.cpp:2477
cv::Vec3b Vec3b
Definition: d_opencv_typedefs.h:51
void Update_Image()
D_Viewer::Update_Image Starts the workflow to process and show an image as image or plot.
Definition: d_viewer.cpp:2088
void Set_VisTrafo_Mode_Anchor(int mode=c_VIS_TRAFO_ANCHOR_DYNAMIC)
Definition: d_viewer.h:179
void MouseMoved_Pos(int x, int y)
void MouseClicked_Value(QString val)
cv::Vec2b Vec2b
Definition: d_opencv_typedefs.h:45
void Set_VisTrafo_SpreadInMax(double spread_max=255)
Definition: d_viewer.h:172
void TypeChanged_QI(QString type)
void Set_VisTrafo_Gamma(double gamma=1)
Definition: d_viewer.h:170
void MouseClicked_Left(int x, int y)
Definition: d_viewer.cpp:2392
@ c_VIS_TRAFO_LINEAR
Definition: d_enum.h:697
@ c_VIS_TRAFO_RANGE_DYNAMIC
Definition: d_enum.h:723
void Set_Transformation_Mode(bool smooth)
D_Viewer::Set_Transformation_Mode Set transformation mode to fit an image to a viewer of different si...
Definition: d_viewer.cpp:2213
double scale_f_y()
Definition: d_viewer.h:100
@ c_VIEWER_MODE_NUMBER_OF
Definition: d_enum.h:377
cv::Vec3w Vec3w
Definition: d_opencv_typedefs.h:56
vector< Point > ClickRecord_GetPoints_Polygon()
Definition: d_viewer.cpp:2586
void MouseClicked_Mid(int x, int y)
Definition: d_viewer.cpp:2419
cv::Vec4w Vec4w
Definition: d_opencv_typedefs.h:62
@ c_VIEWER_MODE_PLOT
Definition: d_enum.h:376
const int CHAIN_APPROX_NONE
Definition: d_opencv_typedefs.h:99
void ClickRecord_Start_RecieveOnly()
Definition: d_viewer.cpp:2438
void Scaled_Factor(QString scale)
QString Save_Image_Dialog()
D_Viewer::Save_Image_Dialog Opens a dialog to save the show image (generated default path)
Definition: d_viewer.cpp:2105
@ c_PLOT_SIMPLE_POINT
Definition: d_enum.h:385
@ c_PLOT_SIMPLE_SPLINE_POINT
Definition: d_enum.h:389
void ClickRecordSignal_GetPoints_Circles(vector< vector< Point >> vvPointsCircles)
void Set_VisTrafo_Divisor(double divisor=0)
Definition: d_viewer.h:174
cv::Point Point
Definition: d_opencv_typedefs.h:35
cv::Vec2s Vec2s
Definition: d_opencv_typedefs.h:49
vector< Point > ClickRecord_GetPoints_Ellipse(bool limit_by_img_size=true)
Definition: d_viewer.cpp:2547
void set_zoom_connection_active(int active=1)
Definition: d_viewer.h:80
@ c_PLOT_SIMPLE_SPLINE
Definition: d_enum.h:388
void Zoomed(double x_rel, double y_rel, double factor)
void ClickRecord_ChangeOverlayColor(QColor color)
Definition: d_viewer.cpp:2700
bool ClickRecord_Record(Point P)
Definition: d_viewer.cpp:2444
void Scaled_Factor(double f_x, double f_y)
QImage * pQI()
Definition: d_viewer.h:84
void Set_VisTrafo_Mode_Range(int mode=c_VIS_TRAFO_RANGE_DYNAMIC)
Definition: d_viewer.h:180
void set_Name(QString viewer_name)
Definition: d_viewer.cpp:69
static int ValAtPix(vector< double > *v_value, Mat *pMA_In, size_t x_pos, size_t y_pos)
Definition: d_img_proc.cpp:2192
The D_Error_Handler class takes error codes from D_ERROR_ENUM and shows a popup if an error occures.
Definition: d_error_handler.h:38
void Set_VisTrafo_ActiveInt(int active=1)
Definition: d_viewer.h:168
double img_val_min()
Definition: d_viewer.cpp:146
cv::Vec4b Vec4b
Definition: d_opencv_typedefs.h:57
const int FILLED
Definition: d_opencv_typedefs.h:143
void ClickRecord_Quit()
Definition: d_viewer.cpp:2521
cv::Vec3f Vec3f
Definition: d_opencv_typedefs.h:53
static int MinMax_of_Mat(Mat *pMA_In, double *min_ext, double *max_ext)
Definition: d_img_proc.cpp:2052
cv::Vec2f Vec2f
Definition: d_opencv_typedefs.h:47
void MouseMoved_Pos(QString pos)
D_Viewer()
Definition: d_viewer.cpp:11
void ClickRecordSignal_RecordedPointsCount(size_t count)
void MouseClickedRight_Pos(int x, int y)
void Set_ViewerMode(int mode)
D_Viewer::Set_ViewerMode Set view mode to image or plot and show image or plot.
Definition: d_viewer.cpp:2185
void ClickRecordSignal_Record(int x, int y)
const int RETR_TREE
Definition: d_opencv_typedefs.h:97
static int Zoom(Mat *pMA_Out, Mat *pMA_In, double x_rel, double y_rel, double factor)
Definition: d_img_proc.cpp:5649
void Set_VisTrafo_Range(double range=127.5)
Definition: d_viewer.h:176
void MouseClickedLeft_Pos(int x, int y)
cv::Scalar Scalar
Definition: d_opencv_typedefs.h:30
vector< Point > ClickRecord_GetPoints()
Definition: d_viewer.cpp:2536
void ClickRecord_ChangeOverlayPointDiameter(int d)
Definition: d_viewer.cpp:2706
double img_val_range()
Definition: d_viewer.cpp:172
const QStringList QSL_ViewerMode
Definition: d_enum.h:379
double zoom_y_rel()
Definition: d_viewer.h:102
void ClickRecordSignal_Quit()
@ ER_size_bad
Definition: d_enum.h:140
QGraphicsView * pGV()
Definition: d_viewer.h:87
void Set_VisTrafo_Mode_Trafo(int mode=c_VIS_TRAFO_LINEAR)
Definition: d_viewer.h:178
void MouseClicked_Value(vector< double > val)
void MouseClicked_Pos(int x, int y)
void Scaled_Factor_Prz(QString scale_prz)
void ClickRecordSignal_Clear()
cv::Vec2d Vec2d
Definition: d_opencv_typedefs.h:46
static function< double(double val_in)> Log_Centered(double center, double divisor)
Definition: d_math.cpp:1780
cv::Vec4i Vec4i
Definition: d_opencv_typedefs.h:60
@ c_COMPLEX2REAL_RE_IM
Definition: d_enum.h:978
void ClickRecordSignal_Start()
unsigned int img_height()
Definition: d_viewer.h:93
void MouseMoved_Value(vector< double > val)
void set_GV(QGraphicsView *GV_ui)
Definition: d_viewer.cpp:49
Mat * pMA()
Definition: d_viewer.h:83
static int Plot_Empty(QChartView *pChartView, QString QS_Text="No_Additional_Information")
Definition: d_plot.cpp:16
void Image_Saved(QString path)
void clear_Image()
Definition: d_viewer.cpp:74
@ ER_other
Definition: d_enum.h:134
double scale_f_x()
Definition: d_viewer.h:99
void set_CV(QtCharts::QChartView *CV_ui)
Definition: d_viewer.cpp:54
void ClickRecord_Clear()
Definition: d_viewer.cpp:2507
@ c_VIS_TRAFO_ANCHOR_DYNAMIC
Definition: d_enum.h:709
void Set_VisTrafo_Mode_Crop(int mode=c_VIS_TRAFO_CROP_DYNAMIC)
Definition: d_viewer.h:177
void Set_ZoomReset_Extern()
Definition: d_viewer.cpp:2276
void Image_Size_Changed(int width, int height)
QString Type_QI()
Definition: d_viewer.h:91
static function< double(double val_in)> CopyValue()
Definition: d_math.cpp:1724
void Image_Size_Changed(QString size)
void MouseClicked_Right(int x, int y)
Definition: d_viewer.cpp:2407
SceneMouseTrack * pSC()
Definition: d_viewer.h:86
@ c_VIS_TRAFO_CROP_FIXED
Definition: d_enum.h:688
void Set_Name(QString name)
Definition: d_viewer.h:186
@ c_PLOT_SIMPLE_LINE
Definition: d_enum.h:386
static QString Type_of_QImage(QImage *pQI_In)
Definition: d_img_proc.cpp:461
void connect_Zoom(D_Viewer *viewer)
Definition: d_viewer.cpp:128
double zoom_fact()
Definition: d_viewer.h:103
static int Free_Memory(QChartView *pChartView)
Definition: d_plot.cpp:3922
static int Convert_Mat_to_QImage(QImage *pQI_Out, Mat *pMA_In, bool use_custom_range_for_spread_non_8bit=false, double in_min=0, double in_max=1)
Definition: d_img_proc.cpp:973
void ClickRecordSignal_GetPoints(vector< Point > vPoints)
void MouseClicked_Pos(QString pos)
@ c_PLOT_SIMPLE_LINE_POINT
Definition: d_enum.h:387
@ c_VIS_TRAFO_GAMMA
Definition: d_enum.h:698
void Set_PlotType(int mode)
Definition: d_viewer.h:167
cv::RotatedRect RotatedRect
Definition: d_opencv_typedefs.h:66
QString Save_Image()
D_Viewer::Save_Image Saves the image at FI_LastSaved.
Definition: d_viewer.cpp:2157
void TypeChanged_MA(QString type)
RotatedRect ClickRecord_Ellipse()
Definition: d_viewer.cpp:2680
@ ER_parameter_bad
Definition: d_enum.h:142
Point MousePos()
Definition: d_viewer.h:196
void Set_Zoom_Extern(double x_rel, double y_rel, double factor)
Definition: d_viewer.cpp:2237
void Set_Image(Mat *MA_new)
D_Viewer::Set_Image Set image.
Definition: d_viewer.cpp:2058
void connect_PointRecord(D_Viewer *viewer)
Definition: d_viewer.cpp:82
vector< vector< Point > > ClickRecord_GetPoints_Circles(double radius)
Definition: d_viewer.cpp:2650
vector< Point > ClickRecord_GetPoints_ConvexHull()
Definition: d_viewer.cpp:2616
int MousePos_X()
Definition: d_viewer.h:197
void Set_VisTrafo_Center(double center=0)
Definition: d_viewer.h:173
@ c_VIS_TRAFO_CROP_DYNAMIC
Definition: d_enum.h:687
size_t ClickRecord_RecordedPointsCount()
Definition: d_viewer.cpp:2712
double img_val_max()
Definition: d_viewer.cpp:159
void ClickRecordSignal_GetPoints_Ellipse(vector< Point > vPointsEllipse)
@ c_VIS_TRAFO_LOG
Definition: d_enum.h:699
The SceneMouseTrack class Scene to put in a QGraphicsView that emits additional signals.
Definition: scenemousetrack.h:36
void Set_ZoomReset()
D_Viewer::Set_ZoomReset Reset zoom parameters to no zoom.
Definition: d_viewer.cpp:2266
cv::Vec3s Vec3s
Definition: d_opencv_typedefs.h:55
static function< double(double val_in)> GammaCorrect_to01(double min, double max, double gamma)
Definition: d_math.cpp:1764