Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
O
opencv
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
opencv
Commits
4bcd81f8
Commit
4bcd81f8
authored
Jun 26, 2010
by
Yannick Verdie
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
New functions with QT GUI:
- aspectRatio is controled by cvSet/getWindowProperty
parent
397b31e4
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
143 additions
and
88 deletions
+143
-88
CMakeLists.txt
CMakeLists.txt
+1
-8
CMakeLists.txt
modules/highgui/CMakeLists.txt
+1
-9
highgui_c.h
modules/highgui/include/opencv2/highgui/highgui_c.h
+4
-1
precomp.hpp
modules/highgui/src/precomp.hpp
+2
-0
window.cpp
modules/highgui/src/window.cpp
+15
-1
window_QT.cpp
modules/highgui/src/window_QT.cpp
+111
-53
window_QT.h
modules/highgui/src/window_QT.h
+9
-16
No files found.
CMakeLists.txt
View file @
4bcd81f8
...
@@ -504,14 +504,7 @@ if (QT4_FOUND AND AUTOSWITCH_QT)
...
@@ -504,14 +504,7 @@ if (QT4_FOUND AND AUTOSWITCH_QT)
set
(
WITH_QT ON CACHE BOOL
"Build with QT Backend support"
)
set
(
WITH_QT ON CACHE BOOL
"Build with QT Backend support"
)
find_package
(
OpenGL QUIET
)
find_package
(
OpenGL QUIET
)
if
(
QT_QTOPENGL_FOUND AND OPENGL_FOUND
)
if
(
QT_QTOPENGL_FOUND AND OPENGL_FOUND
)
#GLU is not mandatory but we used gluPerspective in setGL so, we need it for now.
if
(
OPENGL_GLU_FOUND
)
set
(
WITH_QT_OPENGL ON CACHE BOOL
"Add OpenGL extention to QT"
)
set
(
WITH_QT_OPENGL ON CACHE BOOL
"Add OpenGL extention to QT"
)
else
()
message
(
STATUS
"OpenGL found but not GLU, please install it"
)
endif
()
endif
()
endif
()
endif
()
endif
()
...
@@ -535,7 +528,7 @@ if (WITH_QT)
...
@@ -535,7 +528,7 @@ if (WITH_QT)
endif
()
endif
()
if
(
WITH_QT_OPENGL
)
if
(
WITH_QT_OPENGL
)
message
(
STATUS
"OpenGL for QT enable
(with GLU)
"
)
message
(
STATUS
"OpenGL for QT enable"
)
set
(
HAVE_QT_OPENGL 1
)
set
(
HAVE_QT_OPENGL 1
)
add_definitions
(
-DOPENCV_GL=1
)
add_definitions
(
-DOPENCV_GL=1
)
endif
()
endif
()
...
...
modules/highgui/CMakeLists.txt
View file @
4bcd81f8
...
@@ -70,11 +70,8 @@ endforeach()
...
@@ -70,11 +70,8 @@ endforeach()
if
(
WIN32
)
if
(
WIN32
)
if
(
HAVE_QT
)
if
(
HAVE_QT
)
#SET(QT_USE_QTXML 1)
if
(
HAVE_QT_OPENGL
)
if
(
HAVE_QT_OPENGL
)
set
(
QT_USE_QTOPENGL TRUE
)
set
(
QT_USE_QTOPENGL TRUE
)
set
(
HIGHGUI_LIBRARIES
${
HIGHGUI_LIBRARIES
}
${
OPENGL_LIBRARIES
}
)
endif
()
endif
()
INCLUDE
(
${
QT_USE_FILE
}
)
INCLUDE
(
${
QT_USE_FILE
}
)
...
@@ -97,11 +94,9 @@ endif()
...
@@ -97,11 +94,9 @@ endif()
if
(
UNIX
)
if
(
UNIX
)
if
(
HAVE_QT
)
if
(
HAVE_QT
)
#SET(QT_USE_QTXML 1)
if
(
HAVE_QT_OPENGL
)
if
(
HAVE_QT_OPENGL
)
set
(
QT_USE_QTOPENGL TRUE
)
set
(
QT_USE_QTOPENGL TRUE
)
set
(
HIGHGUI_LIBRARIES
${
HIGHGUI_LIBRARIES
}
${
OPENGL_LIBRARIES
}
)
#
set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES} ${OPENGL_LIBRARIES})
endif
()
endif
()
INCLUDE
(
${
QT_USE_FILE
}
)
INCLUDE
(
${
QT_USE_FILE
}
)
...
@@ -194,11 +189,8 @@ if(APPLE)
...
@@ -194,11 +189,8 @@ if(APPLE)
endif
()
endif
()
if
(
HAVE_QT
)
if
(
HAVE_QT
)
#SET(QT_USE_QTXML 1)
if
(
HAVE_QT_OPENGL
)
if
(
HAVE_QT_OPENGL
)
set
(
QT_USE_QTOPENGL TRUE
)
set
(
QT_USE_QTOPENGL TRUE
)
set
(
HIGHGUI_LIBRARIES
${
HIGHGUI_LIBRARIES
}
${
OPENGL_LIBRARIES
}
)
endif
()
endif
()
INCLUDE
(
${
QT_USE_FILE
}
)
INCLUDE
(
${
QT_USE_FILE
}
)
...
...
modules/highgui/include/opencv2/highgui/highgui_c.h
View file @
4bcd81f8
...
@@ -80,8 +80,11 @@ enum
...
@@ -80,8 +80,11 @@ enum
{
{
CV_WND_PROP_FULLSCREEN
=
0
,
CV_WND_PROP_FULLSCREEN
=
0
,
CV_WND_PROP_AUTOSIZE
=
1
,
CV_WND_PROP_AUTOSIZE
=
1
,
CV_WND_PROP_ASPECTRATIO
=
2
,
CV_WINDOW_NORMAL
=
0
,
CV_WINDOW_NORMAL
=
0
,
CV_WINDOW_FULLSCREEN
=
1
CV_WINDOW_FULLSCREEN
=
1
,
CV_WINDOW_FREERATIO
=
0
,
CV_WINDOW_KEEPRATIO
=
1
};
};
...
...
modules/highgui/src/precomp.hpp
View file @
4bcd81f8
...
@@ -177,6 +177,8 @@ double cvGetModeWindow_QT(const char* name);
...
@@ -177,6 +177,8 @@ double cvGetModeWindow_QT(const char* name);
void
cvSetModeWindow_QT
(
const
char
*
name
,
double
prop_value
);
void
cvSetModeWindow_QT
(
const
char
*
name
,
double
prop_value
);
double
cvGetPropWindow_QT
(
const
char
*
name
);
double
cvGetPropWindow_QT
(
const
char
*
name
);
void
cvSetPropWindow_QT
(
const
char
*
name
,
double
prop_value
);
void
cvSetPropWindow_QT
(
const
char
*
name
,
double
prop_value
);
double
cvGetRatioWindow_QT
(
const
char
*
name
);
void
cvSetRatioWindow_QT
(
const
char
*
name
,
double
prop_value
);
#endif
#endif
/*namespace cv
/*namespace cv
...
...
modules/highgui/src/window.cpp
View file @
4bcd81f8
...
@@ -48,7 +48,7 @@ CV_IMPL void cvSetWindowProperty(const char* name, int prop_id, double prop_valu
...
@@ -48,7 +48,7 @@ CV_IMPL void cvSetWindowProperty(const char* name, int prop_id, double prop_valu
switch
(
prop_id
)
switch
(
prop_id
)
{
{
//change between fullscreen or not.
//change between fullscreen or not.
case
CV_WND_PROP_FULLSCREEN
:
//accept CV_WINDOW_NORMAL or CV_WINDOW_FULLSCREEN
case
CV_WND_PROP_FULLSCREEN
:
if
(
!
name
||
(
prop_value
!=
CV_WINDOW_NORMAL
&&
prop_value
!=
CV_WINDOW_FULLSCREEN
))
//bad argument
if
(
!
name
||
(
prop_value
!=
CV_WINDOW_NORMAL
&&
prop_value
!=
CV_WINDOW_FULLSCREEN
))
//bad argument
break
;
break
;
...
@@ -70,6 +70,12 @@ CV_IMPL void cvSetWindowProperty(const char* name, int prop_id, double prop_valu
...
@@ -70,6 +70,12 @@ CV_IMPL void cvSetWindowProperty(const char* name, int prop_id, double prop_valu
#endif
#endif
break
;
break
;
case
CV_WND_PROP_ASPECTRATIO
:
#if defined (HAVE_QT)
cvSetRatioWindow_QT
(
name
,
prop_value
);
#endif
break
;
default:
;
default:
;
}
}
}
}
...
@@ -106,6 +112,14 @@ CV_IMPL double cvGetWindowProperty(const char* name, int prop_id)
...
@@ -106,6 +112,14 @@ CV_IMPL double cvGetWindowProperty(const char* name, int prop_id)
#else
#else
return
-
1
;
return
-
1
;
#endif
#endif
case
CV_WND_PROP_ASPECTRATIO
:
#if defined (HAVE_QT)
return
cvGetRatioWindow_QT
(
name
);
#else
return
-
1
;
#endif
break
;
default:
default:
return
-
1
;
return
-
1
;
...
...
modules/highgui/src/window_QT.cpp
View file @
4bcd81f8
...
@@ -53,6 +53,26 @@ QWaitCondition key_pressed;
...
@@ -53,6 +53,26 @@ QWaitCondition key_pressed;
QMutex
mutexKey
;
QMutex
mutexKey
;
//end static and global
//end static and global
double
cvGetRatioWindow_QT
(
const
char
*
name
)
{
double
result
=
-
1
;
QMetaObject
::
invokeMethod
(
&
guiMainThread
,
"getRatioWindow"
,
//Qt::DirectConnection,
Qt
::
AutoConnection
,
Q_RETURN_ARG
(
double
,
result
),
Q_ARG
(
QString
,
QString
(
name
)));
return
result
;
}
void
cvSetRatioWindow_QT
(
const
char
*
name
,
double
prop_value
)
{
QMetaObject
::
invokeMethod
(
&
guiMainThread
,
"setRatioWindow"
,
Qt
::
AutoConnection
,
Q_ARG
(
QString
,
QString
(
name
)),
Q_ARG
(
double
,
prop_value
));
}
double
cvGetPropWindow_QT
(
const
char
*
name
)
double
cvGetPropWindow_QT
(
const
char
*
name
)
{
{
...
@@ -444,6 +464,35 @@ GuiReceiver::GuiReceiver() : _bTimeOut(false)
...
@@ -444,6 +464,35 @@ GuiReceiver::GuiReceiver() : _bTimeOut(false)
qApp
->
setQuitOnLastWindowClosed
(
false
);
//maybe the user would like to access this setting
qApp
->
setQuitOnLastWindowClosed
(
false
);
//maybe the user would like to access this setting
}
}
double
GuiReceiver
::
getRatioWindow
(
QString
name
)
{
QPointer
<
CvWindow
>
w
=
icvFindWindowByName
(
name
.
toLatin1
().
data
()
);
if
(
!
w
)
return
-
1
;
return
(
double
)
w
->
getView
()
->
getRatio
();
}
void
GuiReceiver
::
setRatioWindow
(
QString
name
,
double
arg2
)
{
QPointer
<
CvWindow
>
w
=
icvFindWindowByName
(
name
.
toLatin1
().
data
()
);
if
(
!
w
)
return
;
int
flags
=
(
int
)
arg2
;
if
(
w
->
getView
()
->
getRatio
()
==
flags
)
//nothing to do
return
;
//if valid flags
if
(
flags
==
CV_WINDOW_FREERATIO
||
flags
==
CV_WINDOW_KEEPRATIO
)
w
->
getView
()
->
setRatio
(
flags
);
}
double
GuiReceiver
::
getPropWindow
(
QString
name
)
double
GuiReceiver
::
getPropWindow
(
QString
name
)
{
{
QPointer
<
CvWindow
>
w
=
icvFindWindowByName
(
name
.
toLatin1
().
data
()
);
QPointer
<
CvWindow
>
w
=
icvFindWindowByName
(
name
.
toLatin1
().
data
()
);
...
@@ -741,21 +790,6 @@ CvTrackbar::~CvTrackbar()
...
@@ -741,21 +790,6 @@ CvTrackbar::~CvTrackbar()
delete
label
;
delete
label
;
}
}
CustomLayout
::
CustomLayout
()
{
}
int
CustomLayout
::
heightForWidth
(
int
w
)
const
{
return
w
/
2
;
}
bool
CustomLayout
::
hasHeightForWidth
()
const
{
return
true
;
}
CvWindow
::
CvWindow
(
QString
arg
,
int
arg2
)
CvWindow
::
CvWindow
(
QString
arg
,
int
arg2
)
{
{
moveToThread
(
qApp
->
instance
()
->
thread
());
moveToThread
(
qApp
->
instance
()
->
thread
());
...
@@ -770,7 +804,7 @@ CvWindow::CvWindow(QString arg, int arg2)
...
@@ -770,7 +804,7 @@ CvWindow::CvWindow(QString arg, int arg2)
resize
(
400
,
300
);
resize
(
400
,
300
);
//CV_MODE_NORMAL or CV_MODE_OPENGL
//CV_MODE_NORMAL or CV_MODE_OPENGL
myview
=
new
ViewPort
(
this
,
CV_MODE_NORMAL
,
false
);
//parent, mode_display, keep_aspect_ratio
myview
=
new
ViewPort
(
this
,
CV_MODE_NORMAL
,
CV_WINDOW_KEEPRATIO
);
//parent, mode_display, keep_aspect_ratio
myview
->
setAlignment
(
Qt
::
AlignHCenter
);
myview
->
setAlignment
(
Qt
::
AlignHCenter
);
...
@@ -817,6 +851,8 @@ CvWindow::CvWindow(QString arg, int arg2)
...
@@ -817,6 +851,8 @@ CvWindow::CvWindow(QString arg, int arg2)
show
();
show
();
}
}
CvWindow
::~
CvWindow
()
CvWindow
::~
CvWindow
()
{
{
QLayoutItem
*
child
;
QLayoutItem
*
child
;
...
@@ -842,6 +878,11 @@ CvWindow::~CvWindow()
...
@@ -842,6 +878,11 @@ CvWindow::~CvWindow()
delete
shortcutDown
;
delete
shortcutDown
;
}
}
ViewPort
*
CvWindow
::
getView
()
{
return
myview
;
}
void
CvWindow
::
displayInfo
(
QString
text
,
int
delayms
)
void
CvWindow
::
displayInfo
(
QString
text
,
int
delayms
)
{
{
myview
->
startDisplayInfo
(
text
,
delayms
);
myview
->
startDisplayInfo
(
text
,
delayms
);
...
@@ -920,20 +961,14 @@ void CvWindow::writeSettings()//not tested
...
@@ -920,20 +961,14 @@ void CvWindow::writeSettings()//not tested
}
}
//Here is ViewPort
//Here is ViewPort
ViewPort
::
ViewPort
(
CvWindow
*
arg
,
int
arg2
,
bool
arg3
)
ViewPort
::
ViewPort
(
CvWindow
*
arg
,
int
arg2
,
int
arg3
)
{
{
centralWidget
=
arg
,
centralWidget
=
arg
,
mode
=
arg2
;
mode
=
arg2
;
keepRatio
=
arg3
;
keepRatio
=
arg3
;
modeRatio
=
Qt
::
IgnoreAspectRatio
;
if
(
keepRatio
)
modeRatio
=
Qt
::
KeepAspectRatio
;
setupViewport
(
centralWidget
);
setupViewport
(
centralWidget
);
setContentsMargins
(
0
,
0
,
0
,
0
);
setContentsMargins
(
0
,
0
,
0
,
0
);
//this->setFrameStyle(0);
//this->setFrameShape(QFrame::Box);
setObjectName
(
QString
::
fromUtf8
(
"graphicsView"
));
setObjectName
(
QString
::
fromUtf8
(
"graphicsView"
));
timerDisplay
=
new
QTimer
(
this
);
timerDisplay
=
new
QTimer
(
this
);
...
@@ -943,7 +978,6 @@ ViewPort::ViewPort(CvWindow* arg, int arg2, bool arg3)
...
@@ -943,7 +978,6 @@ ViewPort::ViewPort(CvWindow* arg, int arg2, bool arg3)
positionGrabbing
=
QPointF
(
0
,
0
);
positionGrabbing
=
QPointF
(
0
,
0
);
positionCorners
=
QRect
(
0
,
0
,
size
().
width
(),
size
().
height
());
positionCorners
=
QRect
(
0
,
0
,
size
().
width
(),
size
().
height
());
on_mouse
=
NULL
;
on_mouse
=
NULL
;
deltaOffset
=
QPoint
(
0
,
0
);
mouseCoordinate
=
QPoint
(
-
1
,
-
1
);
mouseCoordinate
=
QPoint
(
-
1
,
-
1
);
...
@@ -970,6 +1004,18 @@ ViewPort::~ViewPort()
...
@@ -970,6 +1004,18 @@ ViewPort::~ViewPort()
delete
timerDisplay
;
delete
timerDisplay
;
}
}
void
ViewPort
::
setRatio
(
int
flags
)
{
keepRatio
=
flags
;
updateGeometry
();
viewport
()
->
update
();
}
int
ViewPort
::
getRatio
()
{
return
keepRatio
;
}
void
ViewPort
::
resetZoom
()
void
ViewPort
::
resetZoom
()
{
{
matrixWorld
.
reset
();
matrixWorld
.
reset
();
...
@@ -1050,9 +1096,6 @@ void ViewPort::updateImage(void* arr)
...
@@ -1050,9 +1096,6 @@ void ViewPort::updateImage(void* arr)
ratioX
=
float
(
image2Draw_ipl
->
width
)
/
float
(
width
());
ratioX
=
float
(
image2Draw_ipl
->
width
)
/
float
(
width
());
ratioY
=
float
(
image2Draw_ipl
->
height
)
/
float
(
height
());
ratioY
=
float
(
image2Draw_ipl
->
height
)
/
float
(
height
());
if
(
keepRatio
)
deltaOffset
=
computeOffset
();
updateGeometry
();
updateGeometry
();
}
}
...
@@ -1067,16 +1110,6 @@ void ViewPort::setMouseCallBack(CvMouseCallback m, void* param)
...
@@ -1067,16 +1110,6 @@ void ViewPort::setMouseCallBack(CvMouseCallback m, void* param)
on_mouse_param
=
param
;
on_mouse_param
=
param
;
}
}
int
ViewPort
::
heightForWidth
(
int
w
)
const
{
return
w
*
float
(
image2Draw_ipl
->
height
)
/
float
(
image2Draw_ipl
->
width
);
}
bool
ViewPort
::
hasHeightForWidth
()
const
{
return
true
;
}
void
ViewPort
::
controlImagePosition
()
void
ViewPort
::
controlImagePosition
()
{
{
qreal
left
,
top
,
right
,
bottom
;
qreal
left
,
top
,
right
,
bottom
;
...
@@ -1278,8 +1311,8 @@ void ViewPort::icvmouseProcessing(QPointF pt, int cv_event, int flags)
...
@@ -1278,8 +1311,8 @@ void ViewPort::icvmouseProcessing(QPointF pt, int cv_event, int flags)
//to convert mouse coordinate
//to convert mouse coordinate
qreal
pfx
,
pfy
;
qreal
pfx
,
pfy
;
matrixWorld_inv
.
map
(
pt
.
x
(),
pt
.
y
(),
&
pfx
,
&
pfy
);
matrixWorld_inv
.
map
(
pt
.
x
(),
pt
.
y
(),
&
pfx
,
&
pfy
);
mouseCoordinate
.
rx
()
=
floor
(
(
pfx
-
deltaOffset
.
x
())
*
ratioX
);
mouseCoordinate
.
rx
()
=
floor
(
pfx
*
ratioX
);
mouseCoordinate
.
ry
()
=
floor
(
(
pfy
-
deltaOffset
.
y
())
*
ratioY
);
mouseCoordinate
.
ry
()
=
floor
(
pfy
*
ratioY
);
if
(
on_mouse
)
if
(
on_mouse
)
on_mouse
(
cv_event
,
mouseCoordinate
.
x
(),
mouseCoordinate
.
y
(),
flags
,
on_mouse_param
);
on_mouse
(
cv_event
,
mouseCoordinate
.
x
(),
mouseCoordinate
.
y
(),
flags
,
on_mouse_param
);
...
@@ -1296,23 +1329,31 @@ QSize ViewPort::sizeHint() const
...
@@ -1296,23 +1329,31 @@ QSize ViewPort::sizeHint() const
}
}
}
}
QPoint
ViewPort
::
computeOffset
()
{
QSizeF
t1
(
image2Draw_ipl
->
width
,
image2Draw_ipl
->
height
);
QSizeF
t2
(
width
(),
height
());
t1
.
scale
(
t2
.
width
(),
t2
.
height
(),
Qt
::
KeepAspectRatio
);
t2
=
(
t2
-
t1
)
/
2.0
;
return
QPoint
(
t2
.
width
(),
t2
.
height
());
}
void
ViewPort
::
resizeEvent
(
QResizeEvent
*
event
)
void
ViewPort
::
resizeEvent
(
QResizeEvent
*
event
)
{
{
controlImagePosition
();
controlImagePosition
();
ratioX
=
float
(
image2Draw_ipl
->
width
)
/
float
(
width
());
ratioX
=
float
(
image2Draw_ipl
->
width
)
/
float
(
width
());
ratioY
=
float
(
image2Draw_ipl
->
height
)
/
float
(
height
());
ratioY
=
float
(
image2Draw_ipl
->
height
)
/
float
(
height
());
if
(
keepRatio
)
if
(
keepRatio
==
CV_WINDOW_KEEPRATIO
)
//to keep the same aspect ratio
deltaOffset
=
computeOffset
();
{
QSize
newSize
=
QSize
(
image2Draw_ipl
->
width
,
image2Draw_ipl
->
height
);
newSize
.
scale
(
event
->
size
(),
Qt
::
KeepAspectRatio
);
//imageWidth/imageHeight = newWidth/newHeight +/- epsilon
//ratioX = ratioY +/- epsilon
//||ratioX - ratioY|| = epsilon
if
(
fabs
(
ratioX
-
ratioY
)
*
100
>
ratioX
)
//avoid infinity loop / epsilon = 1% of ratioX
{
resize
(
newSize
);
//move to the middle
//newSize get the delta offset to place the picture in the middle of its parent
newSize
=
(
event
->
size
()
-
newSize
)
/
2
;
move
(
newSize
.
width
(),
newSize
.
height
());
}
}
return
QGraphicsView
::
resizeEvent
(
event
);
return
QGraphicsView
::
resizeEvent
(
event
);
}
}
...
@@ -1325,8 +1366,9 @@ void ViewPort::paintEvent(QPaintEvent* event)
...
@@ -1325,8 +1366,9 @@ void ViewPort::paintEvent(QPaintEvent* event)
draw2D
(
&
myPainter
);
draw2D
(
&
myPainter
);
#if defined(OPENCV_GL)
#if defined(OPENCV_GL)
if
(
mode
==
CV_MODE_OPENGL
)
if
(
mode
==
CV_MODE_OPENGL
&&
false
)
//disable it for now
{
{
setGL
(
this
->
width
(),
this
->
height
());
setGL
(
this
->
width
(),
this
->
height
());
draw3D
();
draw3D
();
...
@@ -1362,7 +1404,7 @@ void ViewPort::paintEvent(QPaintEvent* event)
...
@@ -1362,7 +1404,7 @@ void ViewPort::paintEvent(QPaintEvent* event)
void
ViewPort
::
draw2D
(
QPainter
*
painter
)
void
ViewPort
::
draw2D
(
QPainter
*
painter
)
{
{
image2Draw_qt
=
QImage
((
uchar
*
)
image2Draw_ipl
->
imageData
,
image2Draw_ipl
->
width
,
image2Draw_ipl
->
height
,
QImage
::
Format_RGB888
);
image2Draw_qt
=
QImage
((
uchar
*
)
image2Draw_ipl
->
imageData
,
image2Draw_ipl
->
width
,
image2Draw_ipl
->
height
,
QImage
::
Format_RGB888
);
painter
->
drawImage
(
deltaOffset
.
x
(),
deltaOffset
.
y
(),
image2Draw_qt
.
scaled
(
this
->
width
(),
this
->
height
(),
mode
Ratio
,
Qt
::
SmoothTransformation
));
painter
->
drawImage
(
0
,
0
,
image2Draw_qt
.
scaled
(
this
->
width
(),
this
->
height
(),
Qt
::
IgnoreAspect
Ratio
,
Qt
::
SmoothTransformation
));
}
}
void
ViewPort
::
drawStatusBar
()
void
ViewPort
::
drawStatusBar
()
...
@@ -1444,12 +1486,28 @@ void ViewPort::initGL()
...
@@ -1444,12 +1486,28 @@ void ViewPort::initGL()
glEnable
(
GL_DEPTH_TEST
);
glEnable
(
GL_DEPTH_TEST
);
}
}
//from http://steinsoft.net/index.php?site=Programming/Code%20Snippets/OpenGL/gluperspective
//do not want to link glu
void
ViewPort
::
icvgluPerspective
(
GLdouble
fovy
,
GLdouble
aspect
,
GLdouble
zNear
,
GLdouble
zFar
)
{
GLdouble
xmin
,
xmax
,
ymin
,
ymax
;
ymax
=
zNear
*
tan
(
fovy
*
M_PI
/
360.0
);
ymin
=
-
ymax
;
xmin
=
ymin
*
aspect
;
xmax
=
ymax
*
aspect
;
glFrustum
(
xmin
,
xmax
,
ymin
,
ymax
,
zNear
,
zFar
);
}
void
ViewPort
::
setGL
(
int
width
,
int
height
)
void
ViewPort
::
setGL
(
int
width
,
int
height
)
{
{
glMatrixMode
(
GL_PROJECTION
);
glMatrixMode
(
GL_PROJECTION
);
glPushMatrix
();
glPushMatrix
();
glLoadIdentity
();
glLoadIdentity
();
gluPerspective
(
45
,
float
(
width
)
/
float
(
height
),
0.01
,
1000
);
icv
gluPerspective
(
45
,
float
(
width
)
/
float
(
height
),
0.01
,
1000
);
glMatrixMode
(
GL_MODELVIEW
);
glMatrixMode
(
GL_MODELVIEW
);
glPushMatrix
();
glPushMatrix
();
glLoadIdentity
();
glLoadIdentity
();
...
...
modules/highgui/src/window_QT.h
View file @
4bcd81f8
...
@@ -107,6 +107,8 @@ public slots:
...
@@ -107,6 +107,8 @@ public slots:
double
isFullScreen
(
QString
name
);
double
isFullScreen
(
QString
name
);
double
getPropWindow
(
QString
name
);
double
getPropWindow
(
QString
name
);
void
setPropWindow
(
QString
name
,
double
flags
);
void
setPropWindow
(
QString
name
,
double
flags
);
double
getRatioWindow
(
QString
name
);
void
setRatioWindow
(
QString
name
,
double
arg2
);
};
};
class
CvTrackbar
:
public
QHBoxLayout
class
CvTrackbar
:
public
QHBoxLayout
...
@@ -133,15 +135,6 @@ private:
...
@@ -133,15 +135,6 @@ private:
int
*
dataSlider
;
int
*
dataSlider
;
};
};
class
CustomLayout
:
public
QVBoxLayout
{
Q_OBJECT
public
:
CustomLayout
();
int
heightForWidth
(
int
w
)
const
;
bool
hasHeightForWidth
()
const
;
};
class
CvWindow
:
public
QWidget
class
CvWindow
:
public
QWidget
{
{
Q_OBJECT
Q_OBJECT
...
@@ -153,6 +146,7 @@ public:
...
@@ -153,6 +146,7 @@ public:
void
updateImage
(
void
*
arr
);
void
updateImage
(
void
*
arr
);
void
displayInfo
(
QString
text
,
int
delayms
);
void
displayInfo
(
QString
text
,
int
delayms
);
void
displayStatusBar
(
QString
text
,
int
delayms
);
void
displayStatusBar
(
QString
text
,
int
delayms
);
ViewPort
*
getView
();
QString
name
;
QString
name
;
int
flags
;
int
flags
;
...
@@ -195,7 +189,7 @@ class ViewPort : public QGraphicsView
...
@@ -195,7 +189,7 @@ class ViewPort : public QGraphicsView
{
{
Q_OBJECT
Q_OBJECT
public
:
public
:
ViewPort
(
CvWindow
*
centralWidget
,
int
mode
=
CV_MODE_NORMAL
,
bool
keepRatio
=
true
);
ViewPort
(
CvWindow
*
centralWidget
,
int
mode
=
CV_MODE_NORMAL
,
int
keepRatio
=
CV_WINDOW_KEEPRATIO
);
~
ViewPort
();
~
ViewPort
();
void
updateImage
(
void
*
arr
);
void
updateImage
(
void
*
arr
);
void
startDisplayInfo
(
QString
text
,
int
delayms
);
void
startDisplayInfo
(
QString
text
,
int
delayms
);
...
@@ -203,6 +197,9 @@ public:
...
@@ -203,6 +197,9 @@ public:
IplImage
*
image2Draw_ipl
;
IplImage
*
image2Draw_ipl
;
QImage
image2Draw_qt
;
QImage
image2Draw_qt
;
void
setRatio
(
int
flags
);
int
getRatio
();
public
slots
:
public
slots
:
//reference:
//reference:
...
@@ -218,11 +215,8 @@ public slots:
...
@@ -218,11 +215,8 @@ public slots:
void
siftWindowOnUp
()
;
void
siftWindowOnUp
()
;
void
siftWindowOnDown
();
void
siftWindowOnDown
();
void
resizeEvent
(
QResizeEvent
*
);
void
resizeEvent
(
QResizeEvent
*
);
int
heightForWidth
(
int
w
)
const
;
bool
hasHeightForWidth
()
const
;
private
:
private
:
Qt
::
AspectRatioMode
modeRatio
;
QPoint
deltaOffset
;
QPoint
deltaOffset
;
QPoint
computeOffset
();
QPoint
computeOffset
();
QPoint
mouseCoordinate
;
QPoint
mouseCoordinate
;
...
@@ -236,7 +230,7 @@ private:
...
@@ -236,7 +230,7 @@ private:
void
*
on_mouse_param
;
void
*
on_mouse_param
;
int
mode
;
int
mode
;
bool
keepRatio
;
int
keepRatio
;
bool
isSameSize
(
IplImage
*
img1
,
IplImage
*
img2
);
bool
isSameSize
(
IplImage
*
img1
,
IplImage
*
img2
);
QSize
sizeHint
()
const
;
QSize
sizeHint
()
const
;
...
@@ -265,14 +259,13 @@ private:
...
@@ -265,14 +259,13 @@ private:
void
unsetGL
();
void
unsetGL
();
void
initGL
();
void
initGL
();
void
setGL
(
int
width
,
int
height
);
void
setGL
(
int
width
,
int
height
);
void
icvgluPerspective
(
GLdouble
fovy
,
GLdouble
aspect
,
GLdouble
zNear
,
GLdouble
zFar
);
#endif
#endif
private
slots
:
private
slots
:
void
stopDisplayInfo
();
void
stopDisplayInfo
();
};
};
//here css for trackbar
//here css for trackbar
/* from http://thesmithfam.org/blog/2010/03/10/fancy-qslider-stylesheet */
/* from http://thesmithfam.org/blog/2010/03/10/fancy-qslider-stylesheet */
static
const
QString
str_Trackbar_css
=
QString
(
""
)
static
const
QString
str_Trackbar_css
=
QString
(
""
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment