diff --git a/Core/src/org/sleuthkit/autopsy/contentviewers/imagetagging/ImageTagsUtil.java b/Core/src/org/sleuthkit/autopsy/contentviewers/imagetagging/ImageTagsUtil.java
index 53dc304b27b6fa3f1b2c30ad4b09667e6482290e..45bb97cc574dcba5d863b64b884c6113e0a674e3 100755
--- a/Core/src/org/sleuthkit/autopsy/contentviewers/imagetagging/ImageTagsUtil.java
+++ b/Core/src/org/sleuthkit/autopsy/contentviewers/imagetagging/ImageTagsUtil.java
@@ -29,13 +29,12 @@
 import javafx.embed.swing.SwingFXUtils;
 import javafx.scene.image.Image;
 import javax.imageio.ImageIO;
-import org.opencv.core.Core;
 import org.opencv.core.Mat;
 import org.opencv.core.MatOfByte;
 import org.opencv.core.Point;
 import org.opencv.core.Scalar;
 import org.opencv.core.Size;
-import org.opencv.highgui.Highgui;
+import org.opencv.imgcodecs.Imgcodecs;
 import org.opencv.imgproc.Imgproc;
 import org.sleuthkit.autopsy.coreutils.ImageUtils;
 import org.sleuthkit.datamodel.AbstractFile;
@@ -124,7 +123,7 @@ private static Mat getImageMatFromFile(AbstractFile file) throws InterruptedExce
 
             byte[] imageBytes = outStream.toByteArray();
             MatOfByte rawSourceBytes = new MatOfByte(imageBytes);
-            Mat sourceImage = Highgui.imdecode(rawSourceBytes, Highgui.IMREAD_COLOR);
+            Mat sourceImage = Imgcodecs.imdecode(rawSourceBytes, Imgcodecs.IMREAD_COLOR);
             rawSourceBytes.release();
 
             return sourceImage;
@@ -150,12 +149,12 @@ private static MatOfByte getTaggedImageMatrix(Mat sourceImage, Collection<ImageT
 
             int rectangleBorderWidth = (int) Math.rint(region.getStrokeThickness());
 
-            Core.rectangle(sourceImage, topLeft, bottomRight,
+            Imgproc.rectangle(sourceImage, topLeft, bottomRight,
                     rectangleBorderColor, rectangleBorderWidth);
         }
 
         MatOfByte taggedMatrix = new MatOfByte();
-        Highgui.imencode(OPENCV_PNG, sourceImage, taggedMatrix);
+        Imgcodecs.imencode(OPENCV_PNG, sourceImage, taggedMatrix);
 
         return taggedMatrix;
     }
@@ -200,13 +199,13 @@ public static BufferedImage getThumbnailWithTags(AbstractFile file, Collection<I
      */
     private static MatOfByte getResizedMatrix(MatOfByte taggedMatrix, IconSize size) {
         Size resizeDimensions = new Size(size.getSize(), size.getSize());
-        Mat taggedImage = Highgui.imdecode(taggedMatrix, Highgui.IMREAD_COLOR);
+        Mat taggedImage = Imgcodecs.imdecode(taggedMatrix, Imgcodecs.IMREAD_COLOR);
 
         Mat thumbnailImage = new Mat();
         Imgproc.resize(taggedImage, thumbnailImage, resizeDimensions);
 
         MatOfByte thumbnailMatrix = new MatOfByte();
-        Highgui.imencode(OPENCV_PNG, thumbnailImage, thumbnailMatrix);
+        Imgcodecs.imencode(OPENCV_PNG, thumbnailImage, thumbnailMatrix);
 
         thumbnailImage.release();
         taggedImage.release();
diff --git a/Core/src/org/sleuthkit/autopsy/coreutils/VideoUtils.java b/Core/src/org/sleuthkit/autopsy/coreutils/VideoUtils.java
index 1cb0a40d35eeed82531491bb288ec6efa18757a9..459495f3cea173dfdcf92ee792cd599351224daf 100644
--- a/Core/src/org/sleuthkit/autopsy/coreutils/VideoUtils.java
+++ b/Core/src/org/sleuthkit/autopsy/coreutils/VideoUtils.java
@@ -31,7 +31,7 @@
 import java.util.logging.Level;
 import org.netbeans.api.progress.ProgressHandle;
 import org.opencv.core.Mat;
-import org.opencv.highgui.VideoCapture;
+import org.opencv.videoio.VideoCapture;
 import org.openide.util.NbBundle;
 import org.sleuthkit.autopsy.casemodule.Case;
 import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException;
diff --git a/Core/src/org/sleuthkit/autopsy/discovery/ui/DiscoveryUiUtils.java b/Core/src/org/sleuthkit/autopsy/discovery/ui/DiscoveryUiUtils.java
index e94ca0c1a0a5561fae9879c365c195ec068fb10a..3406b4befc544acd624f32cec5b4ebc481f2d0fe 100644
--- a/Core/src/org/sleuthkit/autopsy/discovery/ui/DiscoveryUiUtils.java
+++ b/Core/src/org/sleuthkit/autopsy/discovery/ui/DiscoveryUiUtils.java
@@ -43,7 +43,7 @@
 import org.imgscalr.Scalr;
 import org.netbeans.api.progress.ProgressHandle;
 import org.opencv.core.Mat;
-import org.opencv.highgui.VideoCapture;
+import org.opencv.videoio.VideoCapture;
 import org.openide.util.ImageUtilities;
 import org.openide.util.NbBundle;
 import org.sleuthkit.autopsy.casemodule.Case;
diff --git a/CoreLibs/nbproject/project.properties b/CoreLibs/nbproject/project.properties
index 0ee54ddc28555d92309d8dd3bf97018948f16e12..2f3f278b12fa21ca7dbebcbe11672e9a2349d89a 100644
--- a/CoreLibs/nbproject/project.properties
+++ b/CoreLibs/nbproject/project.properties
@@ -100,7 +100,7 @@ file.reference.ooxml-schemas-1.4.jar=release/modules/ext/ooxml-schemas-1.4.jar
 file.reference.opencensus-api-0.31.0.jar=release/modules/ext/opencensus-api-0.31.0.jar
 file.reference.opencensus-contrib-http-util-0.31.0.jar=release/modules/ext/opencensus-contrib-http-util-0.31.0.jar
 file.reference.opencensus-proto-0.2.0.jar=release/modules/ext/opencensus-proto-0.2.0.jar
-file.reference.opencv-248.jar=release/modules/ext/opencv-248.jar
+file.reference.opencv-3416.jar=release/modules/ext/opencv-3416.jar
 file.reference.perfmark-api-0.23.0.jar=release/modules/ext/perfmark-api-0.23.0.jar
 file.reference.proto-google-cloud-translate-v3-2.1.11.jar=release/modules/ext/proto-google-cloud-translate-v3-2.1.11.jar
 file.reference.proto-google-cloud-translate-v3beta1-0.83.11.jar=release/modules/ext/proto-google-cloud-translate-v3beta1-0.83.11.jar
diff --git a/CoreLibs/nbproject/project.xml b/CoreLibs/nbproject/project.xml
index 0d79f414b1364e4fe88f8df0ca56829118a62986..59eb3cecbf86b1279337847bead9c263f58e7942 100644
--- a/CoreLibs/nbproject/project.xml
+++ b/CoreLibs/nbproject/project.xml
@@ -451,13 +451,14 @@
                 <package>org.opencv.core</package>
                 <package>org.opencv.features2d</package>
                 <package>org.opencv.gpu</package>
-                <package>org.opencv.highgui</package>
                 <package>org.opencv.imgproc</package>
                 <package>org.opencv.ml</package>
                 <package>org.opencv.objdetect</package>
                 <package>org.opencv.photo</package>
                 <package>org.opencv.utils</package>
                 <package>org.opencv.video</package>
+                <package>org.opencv.videoio</package>
+                <package>org.opencv.imgcodecs</package>
                 <package>org.sleuthkit.autopsy.corelibs</package>
                 <package>org.slf4j</package>
                 <package>org.slf4j.event</package>
@@ -873,8 +874,8 @@
                 <binary-origin>release/modules/ext/opencensus-proto-0.2.0.jar</binary-origin>
             </class-path-extension>
             <class-path-extension>
-                <runtime-relative-path>ext/opencv-248.jar</runtime-relative-path>
-                <binary-origin>release/modules/ext/opencv-248.jar</binary-origin>
+                <runtime-relative-path>ext/opencv-3416.jar</runtime-relative-path>
+                <binary-origin>release/modules/ext/opencv-3416.jar</binary-origin>
             </class-path-extension>
             <class-path-extension>
                 <runtime-relative-path>ext/perfmark-api-0.23.0.jar</runtime-relative-path>
diff --git a/thirdparty/opencv/ext/opencv-3416.jar b/thirdparty/opencv/ext/opencv-3416.jar
new file mode 100755
index 0000000000000000000000000000000000000000..41b864171c0ab457ebf41830e376640adf416daa
Binary files /dev/null and b/thirdparty/opencv/ext/opencv-3416.jar differ
diff --git a/thirdparty/opencv/lib/x86/opencv_java3416.dll b/thirdparty/opencv/lib/x86/opencv_java3416.dll
new file mode 100755
index 0000000000000000000000000000000000000000..3fd35050da59fd6d7a676531bc5da642be0d9a62
Binary files /dev/null and b/thirdparty/opencv/lib/x86/opencv_java3416.dll differ
diff --git a/thirdparty/opencv/lib/x86_64/opencv_ffmpeg3416_64.dll b/thirdparty/opencv/lib/x86_64/opencv_ffmpeg3416_64.dll
new file mode 100755
index 0000000000000000000000000000000000000000..ed3b7a0f0e2bca311a9655965bead1fcf7db7835
Binary files /dev/null and b/thirdparty/opencv/lib/x86_64/opencv_ffmpeg3416_64.dll differ
diff --git a/thirdparty/opencv/lib/x86_64/opencv_java3416.dll b/thirdparty/opencv/lib/x86_64/opencv_java3416.dll
new file mode 100755
index 0000000000000000000000000000000000000000..23384ae2d9893d4daa0957112eda94804b1b2513
Binary files /dev/null and b/thirdparty/opencv/lib/x86_64/opencv_java3416.dll differ