diff --git a/src/main/java/plugins/adufour/roi/ROIMeasures.java b/src/main/java/plugins/adufour/roi/ROIMeasures.java
index 5265bf74841366bddf40687aa90d7fa8e1ae8aaa..dc04f6ff881427f48ff34f5115e2ce1c3d431e1f 100644
--- a/src/main/java/plugins/adufour/roi/ROIMeasures.java
+++ b/src/main/java/plugins/adufour/roi/ROIMeasures.java
@@ -9,8 +9,10 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.Comparator;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.concurrent.Callable;
 import java.util.concurrent.Future;
 
@@ -654,6 +656,7 @@ public class ROIMeasures extends EzPlug implements ROIBlock, GlobalSequenceListe
                 }
 
                 Map<ROIDescriptor, Object>[] haralickTextureValues = null;
+                Set<String> haralickErrors = new HashSet<>();
                 if (Measures.INTENSITY_TEXTURE_ASM.isSelected() || Measures.INTENSITY_TEXTURE_CONT.isSelected()
                         || Measures.INTENSITY_TEXTURE_ENT.isSelected() || Measures.INTENSITY_TEXTURE_HOMO.isSelected())
                 {
@@ -673,8 +676,14 @@ public class ROIMeasures extends EzPlug implements ROIBlock, GlobalSequenceListe
                             }
                             catch (UnsupportedOperationException ex)
                             {
-                                System.err.println("Could not compute Haralick texture descriptor");
-                                ex.printStackTrace();
+                                final String mess = ex.getMessage();
+
+                                // we don't want to spam output with these errors
+                                if (!haralickErrors.contains(mess))
+                                {
+                                    haralickErrors.add(mess);
+                                    System.err.println(mess);
+                                }
                             }
                         }
                     }