Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
WEISS
Software Repositories
SNAPPY
scikit-surgerydavinci
Commits
acf4f85f
Commit
acf4f85f
authored
Apr 05, 2019
by
Thomas Dowrick
Browse files
Improve test coverage
parent
78c37c9c
Pipeline
#1930
failed with stages
in 66 minutes and 37 seconds
Changes
4
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
sksurgerydavinci/
widgets/
auto_cropping.py
→
sksurgerydavinci/
davinci_xi_
auto_cropping.py
View file @
acf4f85f
File moved
sksurgerydavinci/widgets/Viewers.py
View file @
acf4f85f
...
...
@@ -3,11 +3,11 @@ import logging
import
datetime
from
PySide2
import
QtWidgets
from
PySide2.QtCore
import
QTimer
from
sksurgery
vtk.widgets.vtk
_overlay_
window
import
VTKOverlayWindow
from
sksurgeryutils.common_overlay_apps
import
OverlayOnVideoFeedCropRecord
from
sksurgery
utils.common
_overlay_
apps
import
\
OverlayOnVideoFeedCropRecord
,
DuplicateOverlayWindow
from
sksurgeryutils.utils.screen_utils
import
ScreenController
from
sksurgerydavinci.ui.gui
import
UI
from
sksurgerydavinci.
widgets.
auto_cropping
import
AutoCropBlackBorder
from
sksurgerydavinci.
davinci_xi_
auto_cropping
import
AutoCropBlackBorder
LOGGER
=
logging
.
getLogger
(
__name__
)
...
...
@@ -15,59 +15,6 @@ LOGGER = logging.getLogger(__name__)
#pylint: disable= no-member, attribute-defined-outside-init
#pylint: disable=protected-access, no-self-use
class
DuplicateOverlayWindow
(
OverlayOnVideoFeedCropRecord
):
"""
Set the background of vtk_overlay_window to duplicate
that of another vtk_overlay_window.
Example usage:
video_source = 0
source_window = OverlayOnVideoFeedCropRecord(video_source)
duplicate_window = DuplicateOverlayWindow()
duplicate_window.set_source_window(source_window)
"""
def
__init__
(
self
):
#pylint: disable=super-init-not-called
self
.
vtk_overlay_window
=
VTKOverlayWindow
()
self
.
update_rate
=
30
self
.
img
=
None
self
.
timer
=
None
def
set_source_window
(
self
,
source_window
):
""" Set the source window.
:param source_window: The window that contains the image to copy. """
self
.
source_window
=
source_window
def
update
(
self
):
""" Update the frame with a new background image."""
if
self
.
source_window
.
roi
:
start_x
,
start_y
=
self
.
source_window
.
roi
[
0
]
end_x
,
end_y
=
self
.
source_window
.
roi
[
1
]
self
.
vtk_overlay_window
.
\
set_video_image
(
self
.
source_window
.
img
[
start_y
:
end_y
,
start_x
:
end_x
,
:])
else
:
self
.
vtk_overlay_window
.
set_video_image
(
self
.
source_window
.
img
)
self
.
vtk_overlay_window
.
_RenderWindow
.
Render
()
def
on_record_start
(
self
):
""" Don't want to call the base class version, so override."""
def
on_record_stop
(
self
):
""" Don't want to call the base class version, so override."""
def
set_roi
(
self
):
""" Don't want to call the base class version, so override."""
class
FakeOverlayOnVideoFeed
:
""" Implement empty methods to replicate OverlayOnVideoFeed. """
...
...
@@ -323,6 +270,9 @@ class MonoViewer(StereoViewerBase):
"""
Generates a VTK interactor UI with a single video stream as background.
:param video_source: OpenCV compatible video source (int or filename)
Only use the left_view of StereoViewerBase. Set the other views to
non-existent views.
"""
def
__init__
(
self
,
video_source
):
LOGGER
.
info
(
"Creating Mono Viewer"
)
...
...
tests/test_Viewers.py
View file @
acf4f85f
import
os
import
sys
import
pytest
import
time
import
numpy
as
np
from
PySide2
import
QtCore
from
sksurgerydavinci.widgets
import
Viewers
from
sksurgeryutils.common_overlay_apps
import
OverlayOnVideoFeed
def
test_button_callbacks_executed
(
qtbot
):
mono
=
Viewers
.
MonoViewer
(
'tests/data/davinci_xi_generated_video.avi'
)
qtbot
.
addWidget
(
mono
)
mono
.
start
()
# Ensure we get a frame
mono
.
left_view
.
update
()
# Screenshot button
qtbot
.
mouseClick
(
mono
.
UI
.
screenshot_button
,
QtCore
.
Qt
.
LeftButton
)
# Record start/stop
qtbot
.
mouseClick
(
mono
.
UI
.
record_button
,
QtCore
.
Qt
.
LeftButton
)
qtbot
.
mouseClick
(
mono
.
UI
.
record_button
,
QtCore
.
Qt
.
LeftButton
)
# Autocropping
qtbot
.
mouseClick
(
mono
.
UI
.
autocrop_button
,
QtCore
.
Qt
.
LeftButton
)
qtbot
.
mouseClick
(
mono
.
UI
.
autocrop_button
,
QtCore
.
Qt
.
LeftButton
)
# # Manual cropping, click crop button then abort
# qtbot.mouseClick(mono.UI.crop_button, QtCore.Qt.LeftButton)
# qtbot.keyPress(mono, 'a')
def
test_mock_stereo_cameras_are_synced
(
qtbot
):
mock_stereo
=
Viewers
.
MockStereoViewer
(
'tests/data/
test
_video.avi'
)
mock_stereo
=
Viewers
.
MockStereoViewer
(
'tests/data/
davinci_xi_generated
_video.avi'
)
qtbot
.
addWidget
(
mock_stereo
)
mock_stereo
.
start
()
...
...
@@ -17,4 +44,14 @@ def test_mock_stereo_cameras_are_synced(qtbot):
ui_cam
=
mock_stereo
.
ui_overlay
.
get_foreground_camera
()
assert
left_cam
==
right_cam
assert
left_cam
==
ui_cam
\ No newline at end of file
assert
left_cam
==
ui_cam
def
test_stereo_viewer_runs
(
qtbot
):
left
=
'tests/data/test_video.avi'
right
=
'tests/data/test_video.avi'
stereo
=
Viewers
.
StereoViewer
(
left
,
right
)
qtbot
.
addWidget
(
stereo
)
stereo
.
start
()
\ No newline at end of file
tests/test_auto_crop.py
View file @
acf4f85f
import
cv2
import
numpy
as
np
import
pytest
from
sksurgerydavinci.
widgets.
auto_cropping
import
AutoCropBlackBorder
from
sksurgerydavinci.
davinci_xi_
auto_cropping
import
AutoCropBlackBorder
def
set_central_screen
(
img
,
size
):
"""
...
...
Write
Preview
Supports
Markdown
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