Index: /other-projects/is-sheet-music-encore/trunk/image-identification-development/.idea/description.html
===================================================================
--- /other-projects/is-sheet-music-encore/trunk/image-identification-development/.idea/description.html	(revision 33097)
+++ /other-projects/is-sheet-music-encore/trunk/image-identification-development/.idea/description.html	(revision 33097)
@@ -0,0 +1,1 @@
+<html>Simple <b>Java</b> application that includes a class with <code>main()</code> method</html>
Index: /other-projects/is-sheet-music-encore/trunk/image-identification-development/.idea/misc.xml
===================================================================
--- /other-projects/is-sheet-music-encore/trunk/image-identification-development/.idea/misc.xml	(revision 33097)
+++ /other-projects/is-sheet-music-encore/trunk/image-identification-development/.idea/misc.xml	(revision 33097)
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="EntryPointsManager">
+    <entry_points version="2.0" />
+  </component>
+  <component name="ProjectKey">
+    <option name="state" value="project://e2804f05-5315-4fc6-a121-c522a6c26470" />
+  </component>
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
+    <output url="file://$PROJECT_DIR$/out" />
+  </component>
+</project>
Index: /other-projects/is-sheet-music-encore/trunk/image-identification-development/.idea/modules.xml
===================================================================
--- /other-projects/is-sheet-music-encore/trunk/image-identification-development/.idea/modules.xml	(revision 33097)
+++ /other-projects/is-sheet-music-encore/trunk/image-identification-development/.idea/modules.xml	(revision 33097)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/image-identification.iml" filepath="$PROJECT_DIR$/image-identification.iml" />
+    </modules>
+  </component>
+</project>
Index: /other-projects/is-sheet-music-encore/trunk/image-identification-development/.idea/project-template.xml
===================================================================
--- /other-projects/is-sheet-music-encore/trunk/image-identification-development/.idea/project-template.xml	(revision 33097)
+++ /other-projects/is-sheet-music-encore/trunk/image-identification-development/.idea/project-template.xml	(revision 33097)
@@ -0,0 +1,3 @@
+<template>
+  <input-field default="com.company">IJ_BASE_PACKAGE</input-field>
+</template>
Index: /other-projects/is-sheet-music-encore/trunk/image-identification-development/.idea/vcs.xml
===================================================================
--- /other-projects/is-sheet-music-encore/trunk/image-identification-development/.idea/vcs.xml	(revision 33097)
+++ /other-projects/is-sheet-music-encore/trunk/image-identification-development/.idea/vcs.xml	(revision 33097)
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="" vcs="svn" />
+  </component>
+</project>
Index: /other-projects/is-sheet-music-encore/trunk/image-identification-development/.idea/workspace.xml
===================================================================
--- /other-projects/is-sheet-music-encore/trunk/image-identification-development/.idea/workspace.xml	(revision 33097)
+++ /other-projects/is-sheet-music-encore/trunk/image-identification-development/.idea/workspace.xml	(revision 33097)
@@ -0,0 +1,409 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ChangeListManager">
+    <list default="true" readonly="true" id="9bad4f92-4a7d-46a2-b6f0-94214c9f55cc" name="Default" comment="">
+      <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/out/production/image-identification/Main.class" beforeDir="false" afterPath="$PROJECT_DIR$/out/production/image-identification/Main.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/Main.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Main.java" afterDir="false" />
+    </list>
+    <ignored path="$PROJECT_DIR$/out/" />
+    <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
+    <option name="TRACKING_ENABLED" value="true" />
+    <option name="SHOW_DIALOG" value="false" />
+    <option name="HIGHLIGHT_CONFLICTS" value="true" />
+    <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
+    <option name="LAST_RESOLUTION" value="IGNORE" />
+  </component>
+  <component name="FileEditorManager">
+    <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
+      <file leaf-file-name="Main.java" pinned="false" current-in-tab="true">
+        <entry file="file://$PROJECT_DIR$/src/Main.java">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="2520">
+              <caret line="168" lean-forward="true" selection-start-line="168" selection-end-line="168" />
+              <folding>
+                <element signature="imports" expanded="true" />
+              </folding>
+            </state>
+          </provider>
+        </entry>
+      </file>
+    </leaf>
+  </component>
+  <component name="IdeDocumentHistory">
+    <option name="CHANGED_PATHS">
+      <list>
+        <option value="$PROJECT_DIR$/src/Main.java" />
+      </list>
+    </option>
+  </component>
+  <component name="ProjectFrameBounds" extendedState="6">
+    <option name="x" value="451" />
+    <option name="y" value="135" />
+    <option name="width" value="1370" />
+    <option name="height" value="910" />
+  </component>
+  <component name="ProjectView">
+    <navigator proportions="" version="1">
+      <foldersAlwaysOnTop value="true" />
+    </navigator>
+    <panes />
+  </component>
+  <component name="PropertiesComponent">
+    <property name="GenerateAntBuildDialog.backupFiles" value="true" />
+    <property name="GenerateAntBuildDialog.enableUiFormCompile" value="true" />
+    <property name="GenerateAntBuildDialog.forceTargetJdk" value="true" />
+    <property name="GenerateAntBuildDialog.generateSingleFile" value="true" />
+    <property name="GenerateAntBuildDialog.outputFileNameProperty" value="image-identification" />
+    <property name="full.screen.before.presentation.mode" value="false" />
+    <property name="last_opened_file_path" value="$USER_HOME$/Desktop" />
+    <property name="project.structure.last.edited" value="Modules" />
+    <property name="project.structure.proportion" value="0.15" />
+    <property name="project.structure.side.proportion" value="0.2" />
+    <property name="settings.editor.selected.configurable" value="preferences.lookFeel" />
+  </component>
+  <component name="RunDashboard">
+    <option name="ruleStates">
+      <list>
+        <RuleState>
+          <option name="name" value="ConfigurationTypeDashboardGroupingRule" />
+        </RuleState>
+        <RuleState>
+          <option name="name" value="StatusDashboardGroupingRule" />
+        </RuleState>
+      </list>
+    </option>
+  </component>
+  <component name="RunManager">
+    <configuration name="Main" type="Application" factoryName="Application" temporary="true">
+      <option name="MAIN_CLASS_NAME" value="Main" />
+      <module name="image-identification" />
+      <option name="VM_PARAMETERS" value="-Djava.library.path=$PROJECT_DIR$/../../opencv-3.4.2/build/lib" />
+      <option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
+      <RunnerSettings RunnerId="Run" />
+      <ConfigurationWrapper RunnerId="Run" />
+    </configuration>
+    <recent_temporary>
+      <list>
+        <item itemvalue="Application.Main" />
+      </list>
+    </recent_temporary>
+  </component>
+  <component name="SvnConfiguration" cleanupOnStartRun="true">
+    <configuration>$USER_HOME$/.subversion</configuration>
+    <supportedVersion>125</supportedVersion>
+  </component>
+  <component name="SvnFileUrlMappingImpl">
+    <option name="myMappingRoots">
+      <list>
+        <SvnCopyRootSimple>
+          <option name="myVcsRoot" value="$PROJECT_DIR$" />
+          <option name="myCopyRoot" value="$PROJECT_DIR$" />
+        </SvnCopyRootSimple>
+        <SvnCopyRootSimple>
+          <option name="myVcsRoot" value="$PROJECT_DIR$/.idea" />
+          <option name="myCopyRoot" value="$PROJECT_DIR$/.idea" />
+        </SvnCopyRootSimple>
+      </list>
+    </option>
+    <option name="myMoreRealMappingRoots">
+      <list>
+        <SvnCopyRootSimple>
+          <option name="myVcsRoot" value="$PROJECT_DIR$" />
+          <option name="myCopyRoot" value="$PROJECT_DIR$" />
+        </SvnCopyRootSimple>
+      </list>
+    </option>
+  </component>
+  <component name="TaskManager">
+    <task active="true" id="Default" summary="Default task">
+      <changelist id="9bad4f92-4a7d-46a2-b6f0-94214c9f55cc" name="Default" comment="" />
+      <created>1557697736662</created>
+      <option name="number" value="Default" />
+      <option name="presentableId" value="Default" />
+      <updated>1557697736662</updated>
+    </task>
+    <servers />
+  </component>
+  <component name="ToolWindowManager">
+    <frame x="65" y="24" width="1855" height="1056" extended-state="6" />
+    <layout>
+      <window_info anchor="right" id="Palette" order="4" />
+      <window_info anchor="bottom" id="TODO" order="10" />
+      <window_info anchor="right" id="Palette&#9;" order="1" />
+      <window_info id="Image Layers" order="4" />
+      <window_info anchor="right" id="Capture Analysis" order="0" />
+      <window_info anchor="bottom" id="Event Log" order="1" side_tool="true" />
+      <window_info anchor="right" id="Maven Projects" order="3" />
+      <window_info anchor="bottom" id="Run" order="6" weight="0.26993865" />
+      <window_info anchor="bottom" id="Version Control" order="2" />
+      <window_info anchor="bottom" id="Terminal" order="0" weight="0.42638037" />
+      <window_info id="Capture Tool" order="2" />
+      <window_info id="Designer" order="0" />
+      <window_info content_ui="combo" id="Project" order="5" weight="0.18382749" />
+      <window_info id="Structure" order="6" side_tool="true" weight="0.25" />
+      <window_info anchor="right" id="Ant Build" order="6" weight="0.25" />
+      <window_info id="UI Designer" order="1" />
+      <window_info anchor="right" id="Theme Preview" order="2" />
+      <window_info anchor="bottom" id="Debug" order="7" weight="0.3997955" />
+      <window_info id="Favorites" order="3" side_tool="true" />
+      <window_info anchor="right" content_ui="combo" id="Hierarchy" order="7" weight="0.25" />
+      <window_info anchor="bottom" id="Messages" order="3" />
+      <window_info anchor="bottom" id="Inspection" order="9" weight="0.4" />
+      <window_info anchor="bottom" id="Inspection Results" order="11" weight="0.32924336" />
+      <window_info anchor="right" id="Commander" internal_type="SLIDING" order="5" type="SLIDING" weight="0.4" />
+      <window_info anchor="bottom" id="Message" order="4" />
+      <window_info anchor="bottom" id="Cvs" order="8" weight="0.25" />
+      <window_info anchor="bottom" id="Find" order="5" weight="0.32924336" />
+    </layout>
+    <layout-to-restore>
+      <window_info anchor="right" id="Palette" order="4" />
+      <window_info anchor="right" content_ui="combo" id="Hierarchy" order="7" weight="0.25" />
+      <window_info anchor="right" id="Capture Analysis" order="0" />
+      <window_info anchor="bottom" id="Run" order="6" visible="true" weight="0.34662578" />
+      <window_info anchor="right" id="Theme Preview" order="2" />
+      <window_info anchor="bottom" id="Cvs" order="8" weight="0.25" />
+      <window_info content_ui="combo" id="Project" order="5" visible="true" weight="0.18382749" />
+      <window_info id="Structure" order="6" side_tool="true" weight="0.25" />
+      <window_info anchor="right" id="Commander" internal_type="SLIDING" order="5" type="SLIDING" weight="0.4" />
+      <window_info anchor="right" id="Ant Build" order="6" weight="0.25" />
+      <window_info anchor="bottom" id="TODO" order="10" />
+      <window_info id="Image Layers" order="4" />
+      <window_info id="Designer" order="0" />
+      <window_info id="UI Designer" order="1" />
+      <window_info anchor="bottom" id="Find" order="5" weight="0.32924336" />
+      <window_info anchor="bottom" id="Debug" order="7" weight="0.4" />
+      <window_info anchor="right" id="Palette&#9;" order="1" />
+      <window_info anchor="bottom" id="Terminal" order="0" />
+      <window_info anchor="bottom" id="Event Log" order="1" side_tool="true" />
+      <window_info anchor="bottom" id="Inspection" order="9" weight="0.4" />
+      <window_info anchor="bottom" id="Version Control" order="2" />
+      <window_info id="Capture Tool" order="2" />
+      <window_info anchor="bottom" id="Message" order="4" />
+      <window_info anchor="bottom" id="Messages" order="3" />
+      <window_info anchor="right" id="Maven Projects" order="3" />
+      <window_info id="Favorites" order="3" side_tool="true" />
+    </layout-to-restore>
+  </component>
+  <component name="VcsContentAnnotationSettings">
+    <option name="myLimit" value="2678400000" />
+  </component>
+  <component name="XDebuggerManager">
+    <breakpoint-manager>
+      <option name="time" value="2" />
+    </breakpoint-manager>
+  </component>
+  <component name="editorHistoryManager">
+    <entry file="file://$PROJECT_DIR$/src/Main.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="1545">
+          <caret line="103" column="41" selection-start-line="103" selection-start-column="41" selection-end-line="103" selection-end-column="41" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/Main.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="1545">
+          <caret line="103" column="41" selection-start-line="103" selection-start-column="41" selection-end-line="103" selection-end-column="41" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/Main.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="1545">
+          <caret line="103" column="41" selection-start-line="103" selection-start-column="41" selection-end-line="103" selection-end-column="41" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/Main.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="1545">
+          <caret line="103" column="41" selection-start-line="103" selection-start-column="41" selection-end-line="103" selection-end-column="41" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/Main.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="1155">
+          <caret line="77" column="33" lean-forward="true" selection-start-line="77" selection-start-column="33" selection-end-line="77" selection-end-column="33" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/Main.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="495">
+          <caret line="33" column="38" selection-start-line="33" selection-start-column="38" selection-end-line="33" selection-end-column="38" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/Main.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="495">
+          <caret line="33" column="38" selection-start-line="33" selection-start-column="38" selection-end-line="33" selection-end-column="38" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/Main.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="285">
+          <caret line="19" lean-forward="true" selection-start-line="19" selection-end-line="19" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/Main.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="1410">
+          <caret line="94" column="73" selection-start-line="94" selection-start-column="73" selection-end-line="94" selection-end-column="73" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/Main.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="495">
+          <caret line="33" column="19" selection-start-line="33" selection-start-column="19" selection-end-line="33" selection-end-column="31" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/Main.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="495">
+          <caret line="33" column="19" selection-start-line="33" selection-start-column="19" selection-end-line="33" selection-end-column="31" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/Main.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="495">
+          <caret line="33" column="19" selection-start-line="33" selection-start-column="19" selection-end-line="33" selection-end-column="31" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="jar://$PROJECT_DIR$/../../opencv-3.4.2/build/bin/opencv-342.jar!/org/opencv/core/Mat.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="317">
+          <caret line="215" column="15" selection-start-line="215" selection-start-column="15" selection-end-line="215" selection-end-column="15" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/Main.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="2520">
+          <caret line="168" lean-forward="true" selection-start-line="168" selection-end-line="168" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+  </component>
+  <component name="masterDetails">
+    <states>
+      <state key="ArtifactsStructureConfigurable.UI">
+        <settings>
+          <artifact-editor />
+          <splitter-proportions>
+            <option name="proportions">
+              <list>
+                <option value="0.2" />
+              </list>
+            </option>
+          </splitter-proportions>
+        </settings>
+      </state>
+      <state key="FacetStructureConfigurable.UI">
+        <settings>
+          <last-edited>No facets are configured</last-edited>
+          <splitter-proportions>
+            <option name="proportions">
+              <list>
+                <option value="0.2" />
+              </list>
+            </option>
+          </splitter-proportions>
+        </settings>
+      </state>
+      <state key="GlobalLibrariesConfigurable.UI">
+        <settings>
+          <splitter-proportions>
+            <option name="proportions">
+              <list>
+                <option value="0.2" />
+              </list>
+            </option>
+          </splitter-proportions>
+        </settings>
+      </state>
+      <state key="JdkListConfigurable.UI">
+        <settings>
+          <last-edited>1.8</last-edited>
+          <splitter-proportions>
+            <option name="proportions">
+              <list>
+                <option value="0.2" />
+              </list>
+            </option>
+          </splitter-proportions>
+        </settings>
+      </state>
+      <state key="ModuleStructureConfigurable.UI">
+        <settings>
+          <last-edited>image-identification</last-edited>
+          <splitter-proportions>
+            <option name="proportions">
+              <list>
+                <option value="0.2" />
+              </list>
+            </option>
+          </splitter-proportions>
+        </settings>
+      </state>
+      <state key="ProjectLibrariesConfigurable.UI">
+        <settings>
+          <splitter-proportions>
+            <option name="proportions">
+              <list>
+                <option value="0.2" />
+              </list>
+            </option>
+          </splitter-proportions>
+        </settings>
+      </state>
+    </states>
+  </component>
+</project>
Index: /other-projects/is-sheet-music-encore/trunk/image-identification-development/Makefile
===================================================================
--- /other-projects/is-sheet-music-encore/trunk/image-identification-development/Makefile	(revision 33097)
+++ /other-projects/is-sheet-music-encore/trunk/image-identification-development/Makefile	(revision 33097)
@@ -0,0 +1,7 @@
+#https://www.tensorflow.org/install/lang_java
+
+run-Classifier01:
+	java -cp /Scratch/cpb16/opencv-3.4.2/build/bin/opencv-342.jar -Djava.library.path=/Scratch/cpb16/opencv-3.4.2/build/lib/ terminalImageId
+
+
+
Index: /other-projects/is-sheet-music-encore/trunk/image-identification-development/image-identification.iml
===================================================================
--- /other-projects/is-sheet-music-encore/trunk/image-identification-development/image-identification.iml	(revision 33097)
+++ /other-projects/is-sheet-music-encore/trunk/image-identification-development/image-identification.iml	(revision 33097)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="JAVA_MODULE" version="4">
+  <component name="NewModuleRootManager" inherit-compiler-output="true">
+    <exclude-output />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$MODULE_DIR$/../../opencv-3.4.2/build/bin/opencv-342.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES>
+          <root url="jar://$MODULE_DIR$/../../opencv-3.4.2/build/bin/opencv-342.jar!/" />
+        </SOURCES>
+      </library>
+    </orderEntry>
+  </component>
+</module>
Index: /other-projects/is-sheet-music-encore/trunk/image-identification-development/image-identification.properties
===================================================================
--- /other-projects/is-sheet-music-encore/trunk/image-identification-development/image-identification.properties	(revision 33097)
+++ /other-projects/is-sheet-music-encore/trunk/image-identification-development/image-identification.properties	(revision 33097)
@@ -0,0 +1,4 @@
+path.variable.kotlin_bundled=/opt/idea/plugins/Kotlin/kotlinc
+path.variable.maven_repository=/home/cpb16/.m2/repository
+jdk.home.1.8=/usr/lib/jvm/java-8-oracle
+javac2.instrumentation.includeJavaRuntime=false
Index: /other-projects/is-sheet-music-encore/trunk/image-identification-development/image-identification.xml
===================================================================
--- /other-projects/is-sheet-music-encore/trunk/image-identification-development/image-identification.xml	(revision 33097)
+++ /other-projects/is-sheet-music-encore/trunk/image-identification-development/image-identification.xml	(revision 33097)
@@ -0,0 +1,197 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="image-identification" default="all">
+  
+  
+  <property file="image-identification.properties"/>
+  <!-- Uncomment the following property if no tests compilation is needed -->
+  <!-- 
+  <property name="skip.tests" value="true"/>
+   -->
+  
+  <!-- Compiler options -->
+  
+  <property name="compiler.debug" value="on"/>
+  <property name="compiler.generate.no.warnings" value="off"/>
+  <property name="compiler.args" value=""/>
+  <property name="compiler.max.memory" value="700m"/>
+  <patternset id="ignored.files">
+    <exclude name="**/*.hprof/**"/>
+    <exclude name="**/*.pyc/**"/>
+    <exclude name="**/*.pyo/**"/>
+    <exclude name="**/*.rbc/**"/>
+    <exclude name="**/*.yarb/**"/>
+    <exclude name="**/*~/**"/>
+    <exclude name="**/.DS_Store/**"/>
+    <exclude name="**/.git/**"/>
+    <exclude name="**/.hg/**"/>
+    <exclude name="**/.svn/**"/>
+    <exclude name="**/CVS/**"/>
+    <exclude name="**/__pycache__/**"/>
+    <exclude name="**/_svn/**"/>
+    <exclude name="**/vssver.scc/**"/>
+    <exclude name="**/vssver2.scc/**"/>
+  </patternset>
+  <patternset id="library.patterns">
+    <include name="*.war"/>
+    <include name="*.swc"/>
+    <include name="*.zip"/>
+    <include name="*.egg"/>
+    <include name="*.ane"/>
+    <include name="*.jar"/>
+    <include name="*.ear"/>
+  </patternset>
+  <patternset id="compiler.resources">
+    <exclude name="**/?*.java"/>
+    <exclude name="**/?*.form"/>
+    <exclude name="**/?*.class"/>
+    <exclude name="**/?*.groovy"/>
+    <exclude name="**/?*.scala"/>
+    <exclude name="**/?*.flex"/>
+    <exclude name="**/?*.kt"/>
+    <exclude name="**/?*.clj"/>
+    <exclude name="**/?*.aj"/>
+  </patternset>
+  
+  <!-- JDK definitions -->
+  
+  <property name="jdk.bin.1.8" value="${jdk.home.1.8}/bin"/>
+  <path id="jdk.classpath.1.8">
+    <fileset dir="${jdk.home.1.8}">
+      <include name="jre/lib/charsets.jar"/>
+      <include name="jre/lib/deploy.jar"/>
+      <include name="jre/lib/ext/cldrdata.jar"/>
+      <include name="jre/lib/ext/dnsns.jar"/>
+      <include name="jre/lib/ext/jaccess.jar"/>
+      <include name="jre/lib/ext/jfxrt.jar"/>
+      <include name="jre/lib/ext/localedata.jar"/>
+      <include name="jre/lib/ext/nashorn.jar"/>
+      <include name="jre/lib/ext/sunec.jar"/>
+      <include name="jre/lib/ext/sunjce_provider.jar"/>
+      <include name="jre/lib/ext/sunpkcs11.jar"/>
+      <include name="jre/lib/ext/zipfs.jar"/>
+      <include name="jre/lib/javaws.jar"/>
+      <include name="jre/lib/jce.jar"/>
+      <include name="jre/lib/jfr.jar"/>
+      <include name="jre/lib/jfxswt.jar"/>
+      <include name="jre/lib/jsse.jar"/>
+      <include name="jre/lib/management-agent.jar"/>
+      <include name="jre/lib/plugin.jar"/>
+      <include name="jre/lib/resources.jar"/>
+      <include name="jre/lib/rt.jar"/>
+    </fileset>
+  </path>
+  
+  <property name="project.jdk.home" value="${jdk.home.1.8}"/>
+  <property name="project.jdk.bin" value="${jdk.bin.1.8}"/>
+  <property name="project.jdk.classpath" value="jdk.classpath.1.8"/>
+  <!-- Register Custom Compiler Taskdefs -->
+  <property name="javac2.home" value="${idea.home}/lib"/>
+  <path id="javac2.classpath">
+    <fileset dir="${javac2.home}">
+      <include name="javac2.jar"/>
+      <include name="jdom.jar"/>
+      <include name="asm-all*.jar"/>
+      <include name="jgoodies-forms.jar"/>
+    </fileset>
+  </path>
+  <target name="register.custom.compilers">
+    <taskdef name="javac2" classname="com.intellij.ant.Javac2" classpathref="javac2.classpath"/>
+    <taskdef name="instrumentIdeaExtensions" classname="com.intellij.ant.InstrumentIdeaExtensions" classpathref="javac2.classpath"/>
+  </target>
+  
+  <!-- Modules -->
+  
+  
+  <!-- Module image-identification -->
+  
+  <dirname property="module.image-identification.basedir" file="${ant.file}"/>
+  
+  
+  <property name="module.jdk.home.image-identification" value="${project.jdk.home}"/>
+  <property name="module.jdk.bin.image-identification" value="${project.jdk.bin}"/>
+  <property name="module.jdk.classpath.image-identification" value="${project.jdk.classpath}"/>
+  
+  <property name="compiler.args.image-identification" value="-encoding UTF-8 -source 8 -target 8 ${compiler.args}"/>
+  
+  <property name="image-identification.output.dir" value="${module.image-identification.basedir}/out/production/image-identification"/>
+  <property name="image-identification.testoutput.dir" value="${module.image-identification.basedir}/out/test/image-identification"/>
+  
+  <path id="image-identification.module.bootclasspath">
+    <!-- Paths to be included in compilation bootclasspath -->
+  </path>
+  
+  <path id="image-identification.module.production.classpath">
+    <path refid="${module.jdk.classpath.image-identification}"/>
+    <pathelement location="${basedir}/../../opencv-3.4.2/build/bin/opencv-342.jar"/>
+  </path>
+  
+  <path id="image-identification.runtime.production.module.classpath">
+    <pathelement location="${image-identification.output.dir}"/>
+    <pathelement location="${basedir}/../../opencv-3.4.2/build/bin/opencv-342.jar"/>
+  </path>
+  
+  <path id="image-identification.module.classpath">
+    <path refid="${module.jdk.classpath.image-identification}"/>
+    <pathelement location="${image-identification.output.dir}"/>
+    <pathelement location="${basedir}/../../opencv-3.4.2/build/bin/opencv-342.jar"/>
+  </path>
+  
+  <path id="image-identification.runtime.module.classpath">
+    <pathelement location="${image-identification.testoutput.dir}"/>
+    <pathelement location="${image-identification.output.dir}"/>
+    <pathelement location="${basedir}/../../opencv-3.4.2/build/bin/opencv-342.jar"/>
+  </path>
+  
+  
+  <patternset id="excluded.from.module.image-identification">
+    <patternset refid="ignored.files"/>
+  </patternset>
+  
+  <patternset id="excluded.from.compilation.image-identification">
+    <patternset refid="excluded.from.module.image-identification"/>
+  </patternset>
+  
+  <path id="image-identification.module.sourcepath">
+    <dirset dir="${module.image-identification.basedir}">
+      <include name="src"/>
+    </dirset>
+  </path>
+  
+  
+  <target name="compile.module.image-identification" depends="compile.module.image-identification.production,compile.module.image-identification.tests" description="Compile module image-identification"/>
+  
+  <target name="compile.module.image-identification.production" depends="register.custom.compilers" description="Compile module image-identification; production classes">
+    <mkdir dir="${image-identification.output.dir}"/>
+    <javac2 destdir="${image-identification.output.dir}" debug="${compiler.debug}" nowarn="${compiler.generate.no.warnings}" memorymaximumsize="${compiler.max.memory}" fork="true" executable="${module.jdk.bin.image-identification}/javac">
+      <compilerarg line="${compiler.args.image-identification}"/>
+      <bootclasspath refid="image-identification.module.bootclasspath"/>
+      <classpath refid="image-identification.module.production.classpath"/>
+      <src refid="image-identification.module.sourcepath"/>
+      <patternset refid="excluded.from.compilation.image-identification"/>
+    </javac2>
+    
+    <copy todir="${image-identification.output.dir}">
+      <fileset dir="${module.image-identification.basedir}/src">
+        <patternset refid="compiler.resources"/>
+        <type type="file"/>
+      </fileset>
+    </copy>
+  </target>
+  
+  <target name="compile.module.image-identification.tests" depends="register.custom.compilers,compile.module.image-identification.production" description="compile module image-identification; test classes" unless="skip.tests"/>
+  
+  <target name="clean.module.image-identification" description="cleanup module">
+    <delete dir="${image-identification.output.dir}"/>
+    <delete dir="${image-identification.testoutput.dir}"/>
+  </target>
+  
+  <target name="init" description="Build initialization">
+    <!-- Perform any build initialization in this target -->
+  </target>
+  
+  <target name="clean" depends="clean.module.image-identification" description="cleanup all"/>
+  
+  <target name="build.modules" depends="init, clean, compile.module.image-identification" description="build all modules"/>
+  
+  <target name="all" depends="build.modules" description="build all"/>
+</project>
Index: /other-projects/is-sheet-music-encore/trunk/image-identification-development/src/Main.java
===================================================================
--- /other-projects/is-sheet-music-encore/trunk/image-identification-development/src/Main.java	(revision 33097)
+++ /other-projects/is-sheet-music-encore/trunk/image-identification-development/src/Main.java	(revision 33097)
@@ -0,0 +1,178 @@
+import org.opencv.core.*;
+import org.opencv.core.Point;
+import org.opencv.highgui.HighGui;
+import org.opencv.imgcodecs.Imgcodecs;
+import org.opencv.imgproc.Imgproc;
+import static org.opencv.imgcodecs.Imgcodecs.imwrite;
+import java.awt.image.BufferedImage;
+import java.awt.image.DataBufferByte;
+import java.io.File;
+import javax.imageio.ImageIO;
+
+//REFERENCES:
+//https://docs.opencv.org/3.4.3/d9/db0/tutorial_hough_lines.
+//https://stackoverflow.com/questions/43443309/count-red-pixel-in-a-given-image
+//https://www.wikihow.com/Calculate-Percentage-in-Java
+//https://riptutorial.com/opencv/example/21963/converting-an-mat-object-to-an-bufferedimage-object
+
+
+
+//GOAL for 21st
+
+
+//Classifier 01
+//Have args so can call "java image-identification-classifier01 XX XX"
+//args can be parameters in algorthim such as threshold or theta?
+//Run on 5000 images.
+//Record success rates
+//All done with makefile
+
+
+//But first understand houghline transform
+//Know what the algorithm being used is doing.
+//MAke constants for this classifier
+//Make java be able to run on CMD line
+
+public class Main {
+
+    //GLOBAL_CONSTANTS
+    //SHOULD TURN INTO ARGS
+
+    private static  BufferedImage toBufferedImage(Mat mat){
+        //MOSTLY COPY PASTE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+        //MOSTLY COPY PASTE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+        //https://riptutorial.com/opencv/example/21963/converting-an-mat-object-to-an-bufferedimage-object
+        try{
+            int type = BufferedImage.TYPE_3BYTE_BGR;
+            int bufferSize = mat.channels() * mat.cols() * mat.rows();
+            byte[] b = new byte[bufferSize];
+            //get all the pixels
+            mat.get(0, 0, b);
+            BufferedImage image = new BufferedImage(mat.cols(), mat.rows(), type);
+            final byte[] targetPixels = ((DataBufferByte) image.getRaster().getDataBuffer()).getData();
+            System.arraycopy(b, 0, targetPixels, 0, b.length);
+            return image;
+        }
+        catch(Exception e){
+            System.err.println(e);
+        }
+        return null;
+    }
+
+    private static boolean Classifier(BufferedImage img){
+        try {
+            //Read file
+            //BufferedImage img = ImageIO.read(new File(processedFile));
+            int x = img.getWidth();
+            int y = img.getHeight();
+            int pixelCount  = 0;
+            int redCount    = 0;
+            float percentage = 0;
+
+            //Go Thru every pixel
+            for(int i=0; i < y; i++){
+                for(int j=0;j < x; j++){
+                    //Get value for current pixels RGB value
+                    int currPixelRGB = img.getRGB(j, i);
+                    //Check if pixel is red (hex value of red)
+                    if(currPixelRGB == 0xFFFF0000){
+                        redCount++;
+                    }
+                    pixelCount++;
+                }
+            }
+            //Calculate percentage of Red in image
+            percentage = ((float)redCount/(float)pixelCount)*(float)100;
+            //If more than %10 and less than %50 then its sheet music!
+            if(percentage > 10 && percentage < 50){ //MAKE THESE CONSTANTS!!
+                return true;}
+        }
+        catch (Exception e) {
+            System.err.println(e);
+        }
+        return false;
+    }
+
+    public static void main(String[] args) {
+        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
+        try {
+            //Variables
+            Mat edgesDetected = new Mat();
+            Mat edgesDetectedRGB = new Mat();
+            Mat edgesDetectedRGBProb;
+            Mat justEdges; //TESTING
+            String default_file = "Test02.png";
+            String filename = ((args.length > 0) ? args[0] : default_file);
+
+            // Load an image
+            Mat original = Imgcodecs.imread(filename, Imgcodecs.IMREAD_GRAYSCALE);
+            // Edge detection
+            Imgproc.Canny(original, edgesDetected, 50, 200, 3, false);
+            //Copy edges to the images that will display the results in BGR
+            Imgproc.cvtColor(edgesDetected, edgesDetectedRGB, Imgproc.COLOR_GRAY2BGR);
+            edgesDetectedRGBProb = edgesDetectedRGB.clone();
+
+            justEdges = edgesDetectedRGBProb.clone();//TESTING
+
+            // Standard Hough Line Transform
+            Mat lines = new Mat(); // will hold the results of the detection
+            //(edgeDetectedImage, outputOfDetection(r,Îž), resolution of r, resolution of Îž, threshold (minimum num of intersections)
+            Imgproc.HoughLines(edgesDetected, lines, 1.4, Math.PI / 180, 500); // runs the actual detection
+
+            // Draw the lines
+            //LOOK OVER THIS AGAIN THE 1000 might be image height?
+            //THRESHOLD should be changed, based on img dimensions?
+
+            for (int x = 0; x < lines.rows(); x++) {
+                double rho = lines.get(x, 0)[0],
+                        theta = lines.get(x, 0)[1];
+                //CONVERT to Cartisean coord
+                double a = Math.cos(theta), b = Math.sin(theta);
+                double x0 = a * rho, y0 = b * rho;
+
+                Point pt1 = new Point(Math.round(x0 + 1000 * (-b)), Math.round(y0 + 1000 * (a)));
+                Point pt2 = new Point(Math.round(x0 - 1000 * (-b)), Math.round(y0 - 1000 * (a)));
+                Imgproc.line(edgesDetectedRGB, pt1, pt2, new Scalar(0, 0, 255), 3, Imgproc.LINE_AA, 0);
+            }
+
+            // Probabilistic Line Transform
+            Mat linesP = new Mat(); // will hold the results of the detection
+            Imgproc.HoughLinesP(edgesDetected, linesP, 1, Math.PI / 180, 50, 50, 10); // runs the actual detection
+            // Draw the lines
+            for (int x = 0; x < linesP.rows(); x++) {
+                double[] l = linesP.get(x, 0);
+                Imgproc.line(edgesDetectedRGBProb, new Point(l[0], l[1]), new Point(l[2], l[3]), new Scalar(0, 0, 255), 3, Imgproc.LINE_AA, 0);
+            }
+
+            //Convert MAT into a BufferedImage
+            BufferedImage toBeClassifiedImg = toBufferedImage(edgesDetectedRGBProb);
+
+            //Calculate if its sheet music or not
+            Boolean isSheetMusic = Classifier(toBeClassifiedImg);
+            System.out.println("Filename: " + filename + "  Status: " + isSheetMusic);
+
+            //Save Processed Image
+            String processedFile = null;
+            if (isSheetMusic == true) {
+                //NEED FIGURE OUT HOW RUN IN SCRIPT. THEN USE ARGS as filename + "HoughLineP + "png"
+                processedFile = "SheetMusic/Test_HoughLineP.png";
+            }else {
+                processedFile = "Test_HoughLineP.png";
+            }
+            imwrite(processedFile, edgesDetectedRGBProb);
+
+            //Display Results
+            //HighGui.imshow("Source", original);
+            HighGui.imshow("Just Edges", justEdges); //TESTING
+            HighGui.imshow("Detected Lines (in red) - Standard Hough Line Transform", edgesDetectedRGB);
+            //HighGui.imshow("Detected Lines (in red) - Probabilistic Line Transform", edgesDetectedRGBProb);
+
+            // Wait and Exit
+            HighGui.waitKey();
+            System.exit(0);
+        }
+        catch(Exception e){
+            System.err.println(e);
+        }
+    }
+}
Index: /other-projects/is-sheet-music-encore/trunk/image-identification-development/terminalImageClassifier.java
===================================================================
--- /other-projects/is-sheet-music-encore/trunk/image-identification-development/terminalImageClassifier.java	(revision 33097)
+++ /other-projects/is-sheet-music-encore/trunk/image-identification-development/terminalImageClassifier.java	(revision 33097)
@@ -0,0 +1,178 @@
+import org.opencv.core.*;
+import org.opencv.core.Point;
+import org.opencv.highgui.HighGui;
+import org.opencv.imgcodecs.Imgcodecs;
+import org.opencv.imgproc.Imgproc;
+import static org.opencv.imgcodecs.Imgcodecs.imwrite;
+import java.awt.image.BufferedImage;
+import java.awt.image.DataBufferByte;
+import java.io.File;
+import javax.imageio.ImageIO;
+
+//REFERENCES:
+//https://docs.opencv.org/3.4.3/d9/db0/tutorial_hough_lines.
+//https://stackoverflow.com/questions/43443309/count-red-pixel-in-a-given-image
+//https://www.wikihow.com/Calculate-Percentage-in-Java
+//https://riptutorial.com/opencv/example/21963/converting-an-mat-object-to-an-bufferedimage-object
+
+
+
+//GOAL for 21st
+
+
+//Classifier 01
+//Have args so can call "java image-identification-classifier01 XX XX"
+//args can be parameters in algorthim such as threshold or theta?
+//Run on 5000 images.
+//Record success rates
+//All done with makefile
+
+
+//But first understand houghline transform
+//Know what the algorithm being used is doing.
+//MAke constants for this classifier
+//Make java be able to run on CMD line
+
+public class terminalImageClassifier {
+
+    //GLOBAL_CONSTANTS
+    //SHOULD TURN INTO ARGS
+
+    private static  BufferedImage toBufferedImage(Mat mat){
+        //MOSTLY COPY PASTE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+        //MOSTLY COPY PASTE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+        //https://riptutorial.com/opencv/example/21963/converting-an-mat-object-to-an-bufferedimage-object
+        try{
+            int type = BufferedImage.TYPE_3BYTE_BGR;
+            int bufferSize = mat.channels() * mat.cols() * mat.rows();
+            byte[] b = new byte[bufferSize];
+            //get all the pixels
+            mat.get(0, 0, b);
+            BufferedImage image = new BufferedImage(mat.cols(), mat.rows(), type);
+            final byte[] targetPixels = ((DataBufferByte) image.getRaster().getDataBuffer()).getData();
+            System.arraycopy(b, 0, targetPixels, 0, b.length);
+            return image;
+        }
+        catch(Exception e){
+            System.err.println(e);
+        }
+        return null;
+    }
+
+    private static boolean Classifier(BufferedImage img){
+        try {
+            //Read file
+            //BufferedImage img = ImageIO.read(new File(processedFile));
+            int x = img.getWidth();
+            int y = img.getHeight();
+            int pixelCount  = 0;
+            int redCount    = 0;
+            float percentage = 0;
+
+            //Go Thru every pixel
+            for(int i=0; i < y; i++){
+                for(int j=0;j < x; j++){
+                    //Get value for current pixels RGB value
+                    int currPixelRGB = img.getRGB(j, i);
+                    //Check if pixel is red (hex value of red)
+                    if(currPixelRGB == 0xFFFF0000){
+                        redCount++;
+                    }
+                    pixelCount++;
+                }
+            }
+            //Calculate percentage of Red in image
+            percentage = ((float)redCount/(float)pixelCount)*(float)100;
+            //If more than %10 and less than %50 then its sheet music!
+            if(percentage > 10 && percentage < 50){ //MAKE THESE CONSTANTS!!
+                return true;}
+        }
+        catch (Exception e) {
+            System.err.println(e);
+        }
+        return false;
+    }
+
+    public static void main(String[] args) {
+        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
+        try {
+            //Variables
+            Mat edgesDetected = new Mat();
+            Mat edgesDetectedRGB = new Mat();
+            Mat edgesDetectedRGBProb;
+            Mat justEdges; //TESTING
+            String default_file = "Test02.png";
+            String filename = ((args.length > 0) ? args[0] : default_file);
+
+            // Load an image
+            Mat original = Imgcodecs.imread(filename, Imgcodecs.IMREAD_GRAYSCALE);
+            // Edge detection
+            Imgproc.Canny(original, edgesDetected, 50, 200, 3, false);
+            //Copy edges to the images that will display the results in BGR
+            Imgproc.cvtColor(edgesDetected, edgesDetectedRGB, Imgproc.COLOR_GRAY2BGR);
+            edgesDetectedRGBProb = edgesDetectedRGB.clone();
+
+            justEdges = edgesDetectedRGBProb.clone();//TESTING
+
+            // Standard Hough Line Transform
+            Mat lines = new Mat(); // will hold the results of the detection
+            //(edgeDetectedImage, outputOfDetection(r,Îž), resolution of r, resolution of Îž, threshold (minimum num of intersections)
+            Imgproc.HoughLines(edgesDetected, lines, 1.4, Math.PI / 180, 500); // runs the actual detection
+
+            // Draw the lines
+            //LOOK OVER THIS AGAIN THE 1000 might be image height?
+            //THRESHOLD should be changed, based on img dimensions?
+
+            for (int x = 0; x < lines.rows(); x++) {
+                double rho = lines.get(x, 0)[0],
+                        theta = lines.get(x, 0)[1];
+                //CONVERT to Cartisean coord
+                double a = Math.cos(theta), b = Math.sin(theta);
+                double x0 = a * rho, y0 = b * rho;
+
+                Point pt1 = new Point(Math.round(x0 + 1000 * (-b)), Math.round(y0 + 1000 * (a)));
+                Point pt2 = new Point(Math.round(x0 - 1000 * (-b)), Math.round(y0 - 1000 * (a)));
+                Imgproc.line(edgesDetectedRGB, pt1, pt2, new Scalar(0, 0, 255), 3, Imgproc.LINE_AA, 0);
+            }
+
+            // Probabilistic Line Transform
+            Mat linesP = new Mat(); // will hold the results of the detection
+            Imgproc.HoughLinesP(edgesDetected, linesP, 1, Math.PI / 180, 50, 50, 10); // runs the actual detection
+            // Draw the lines
+            for (int x = 0; x < linesP.rows(); x++) {
+                double[] l = linesP.get(x, 0);
+                Imgproc.line(edgesDetectedRGBProb, new Point(l[0], l[1]), new Point(l[2], l[3]), new Scalar(0, 0, 255), 3, Imgproc.LINE_AA, 0);
+            }
+
+            //Convert MAT into a BufferedImage
+            BufferedImage toBeClassifiedImg = toBufferedImage(edgesDetectedRGBProb);
+
+            //Calculate if its sheet music or not
+            Boolean isSheetMusic = Classifier(toBeClassifiedImg);
+            System.out.println("Filename: " + filename + "  Status: " + isSheetMusic);
+
+            //Save Processed Image
+            String processedFile = null;
+            if (isSheetMusic == true) {
+                //NEED FIGURE OUT HOW RUN IN SCRIPT. THEN USE ARGS as filename + "HoughLineP + "png"
+                processedFile = "SheetMusic/Test_HoughLineP.png";
+            }else {
+                processedFile = "Test_HoughLineP.png";
+            }
+            imwrite(processedFile, edgesDetectedRGBProb);
+
+            //Display Results
+            //HighGui.imshow("Source", original);
+            HighGui.imshow("Just Edges", justEdges); //TESTING
+            HighGui.imshow("Detected Lines (in red) - Standard Hough Line Transform", edgesDetectedRGB);
+            //HighGui.imshow("Detected Lines (in red) - Probabilistic Line Transform", edgesDetectedRGBProb);
+
+            // Wait and Exit
+            HighGui.waitKey();
+            System.exit(0);
+        }
+        catch(Exception e){
+            System.err.println(e);
+        }
+    }
+}
Index: /other-projects/is-sheet-music-encore/trunk/image-identification-terminal/Makefile
===================================================================
--- /other-projects/is-sheet-music-encore/trunk/image-identification-terminal/Makefile	(revision 33097)
+++ /other-projects/is-sheet-music-encore/trunk/image-identification-terminal/Makefile	(revision 33097)
@@ -0,0 +1,16 @@
+#https://www.tensorflow.org/install/lang_java
+#testClassifier runs the cmd below
+#java -cp /Scratch/cpb16/opencv-3.4.2/build/bin/opencv-342.jar:. -Djava.library.path=/Scratch/cpb16/opencv-3.4.2/build/lib/  javaImageClassifier TestImages/Test.png 1
+
+test-run-classifier01:
+	javac javaAccuracyCalculator.java
+	javac -cp /Scratch/cpb16/opencv-3.4.2/build/bin/opencv-342.jar javaImageClassifier.java;
+	./testClassifer.sh TestImages 1
+	echo "Displaying javaImageClassifier output"
+	less log.txt
+	java javaAccuracyCalculator log.txt 1 results.txt
+	less results.txt
+	rm log.txt
+
+
+
Index: /other-projects/is-sheet-music-encore/trunk/image-identification-terminal/javaAccuracyCalculator.java
===================================================================
--- /other-projects/is-sheet-music-encore/trunk/image-identification-terminal/javaAccuracyCalculator.java	(revision 33097)
+++ /other-projects/is-sheet-music-encore/trunk/image-identification-terminal/javaAccuracyCalculator.java	(revision 33097)
@@ -0,0 +1,60 @@
+
+import java.io.File;
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.FileReader;
+import java.io.FileWriter;
+
+
+public class javaAccuracyCalculator{
+
+    public static void main(String[] args) {
+    	
+        try {
+			if (args.length != 3) {
+			System.out.println("Usage: imageClassifier <inputFilename> <classifierType> <outputFilename>");
+			}
+			else {
+				String inputFilename = args[0];
+				String classifierType = args[1];
+				String outputFilename = args[2];
+				FileReader fileReader = new FileReader(inputFilename);
+				BufferedReader buf = new BufferedReader(fileReader);
+				FileWriter fw = new FileWriter(outputFilename);
+				String line = null;
+				String[] item;
+				float accuracyRate = 0;
+				int trueCount	= 0;				
+				int lineCount	= 0;
+				
+				//RENAME CLASSIFIER NUMBER TO ACTUALL CLASSIFIER
+				if(classifierType.equals("1")){classifierType = "Probabilistic HoughLines";}
+				
+				//Splits into each record, since readLine splits by "\n"
+				while ((line = buf.readLine()) != null) {
+					lineCount++;
+					//Splits by tab, leaves "" for every blank entry
+					item = line.split("\t");
+					//Check first element (true or false)
+					if(item[0].equals("1")){
+						trueCount++;
+					}						
+				}
+				accuracyRate = ((float)trueCount/(float)lineCount)*(float)100;
+				fw.write("Classifier:" + classifierType + "\t" + accuracyRate + "%" + "\n");		
+				buf.close();
+				fw.close();
+					
+				//Read in log.txt, grab first item in array of each line
+				//counter for everytime have readline
+
+				//Calculate accuracy rate
+								
+			}
+        }
+        catch(Exception e){
+            System.err.println(e);
+        }
+    }  
+ 
+}
Index: /other-projects/is-sheet-music-encore/trunk/image-identification-terminal/javaImageClassifier.java
===================================================================
--- /other-projects/is-sheet-music-encore/trunk/image-identification-terminal/javaImageClassifier.java	(revision 33097)
+++ /other-projects/is-sheet-music-encore/trunk/image-identification-terminal/javaImageClassifier.java	(revision 33097)
@@ -0,0 +1,194 @@
+import org.opencv.core.*;
+import org.opencv.core.Point;
+import org.opencv.highgui.HighGui;
+import org.opencv.imgcodecs.Imgcodecs;
+import org.opencv.imgproc.Imgproc;
+import static org.opencv.imgcodecs.Imgcodecs.imwrite;
+import java.awt.image.BufferedImage;
+import java.awt.image.DataBufferByte;
+import java.io.File;
+import java.io.BufferedWriter;
+import java.io.FileWriter;
+import javax.imageio.ImageIO;
+import java.util.logging.Logger;
+
+//REFERENCES:
+//https://docs.opencv.org/3.4.3/d9/db0/tutorial_hough_lines.
+//https://stackoverflow.com/questions/43443309/count-red-pixel-in-a-given-image
+//https://www.wikihow.com/Calculate-Percentage-in-Java
+//https://riptutorial.com/opencv/example/21963/converting-an-mat-object-to-an-bufferedimage-object
+//https://stackoverflow.com/questions/15758685/how-to-write-logs-in-text-file-when-using-java-util-logging-logger
+//https://stackoverflow.com/questions/9961292/write-to-text-file-without-overwriting-in-java
+
+
+//GOAL for 21st
+
+
+//Classifier 01
+//Have args so can call "java image-identification-classifier01 XX XX"
+//args can be parameters in algorthim such as threshold or theta?
+//Run on 5000 images.
+//Record success rates
+//All done with makefile
+
+
+//But first understand houghline transform
+//Know what the algorithm being used is doing.
+//MAke constants for this classifier
+//Make java be able to run on CMD line
+
+public class javaImageClassifier{
+
+    public static void main(String[] args) {
+    	
+        try {
+			if (args.length != 2) {
+			System.out.println("Usage: imageClassifier <inputFilename> <classifierType>");
+			}
+			else {
+				String imageFilename = args[0];
+				int classifierType = Integer.parseInt(args[1]);
+				
+				String result = null;
+				//Execute classifierType defined from arguement
+				switch(classifierType){
+				case 1:
+					result = classifier01(imageFilename);
+					break;
+				case 2:
+					System.out.println("unknown");
+					break;
+				}
+			
+				//Write output to disc
+				File log = new File("log.txt");
+				FileWriter fileWriter = new FileWriter(log, true);
+				BufferedWriter bw = new BufferedWriter(fileWriter);
+				bw.write(result + classifierType + '\n');
+				bw.close();
+
+				
+			}
+        }
+        catch(Exception e){
+            System.err.println(e);
+        }
+    }  
+    private static String classifier01(String filename){
+	System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
+	Boolean isSheetMusic = null;
+	try{
+	    //Variables
+	    Mat edgesDetected = new Mat();
+	    Mat edgesDetectedRGB = new Mat();
+	    Mat edgesDetectedRGBProb;
+	    // Load an image
+	    Mat original = Imgcodecs.imread(filename, Imgcodecs.IMREAD_GRAYSCALE);
+	    // Edge detection
+	    Imgproc.Canny(original, edgesDetected, 50, 200, 3, false);
+	    //Copy edges to the images that will display the results in BGR
+	    Imgproc.cvtColor(edgesDetected, edgesDetectedRGB, Imgproc.COLOR_GRAY2BGR);
+	    // Probabilistic Line Transform
+	    Mat linesP = new Mat(); // will hold the results of the detection
+	    Imgproc.HoughLinesP(edgesDetected, linesP, 1, Math.PI / 180, 50, 50, 10); // runs the actual detection
+	    // Draw the lines
+	    for (int x = 0; x < linesP.rows(); x++) {
+		double[] l = linesP.get(x, 0);
+		Imgproc.line(edgesDetectedRGB, new Point(l[0], l[1]), new Point(l[2], l[3]), new Scalar(0, 0, 255), 3, Imgproc.LINE_AA, 0);
+	    }
+	    //Convert MAT into a BufferedImage
+	    BufferedImage toBeClassifiedImg = toBufferedImage(edgesDetectedRGB);
+	    //Calculate if its sheet music or not
+	    isSheetMusic = Classifier(toBeClassifiedImg);  
+	            
+        //Save Processed Image
+	    String processedFile = filename;
+	    if (isSheetMusic == true) {
+		processedFile = "proc_T_"+filename;
+	    }else {
+		processedFile = "proc_F_"+filename;
+	    }
+	    imwrite(processedFile, edgesDetectedRGB);
+	    
+	     //Display Results
+            //HighGui.imshow("Source", original);
+            //HighGui.imshow("Just Edges", justEdges); //TESTING
+            //HighGui.imshow("Detected Lines (in red) - Standard Hough Line Transform", edgesDetectedRGB);
+            //HighGui.imshow("Detected Lines (in red) - Probabilistic Line Transform", edgesDetectedRGBProb);
+
+            // Wait and Exit
+            //HighGui.waitKey();
+            //System.exit(0);
+	    		    
+	}
+	catch(Exception e){
+            System.err.println(e);
+        }
+        if (isSheetMusic == true){    
+    		return (1 + "\t" + "Filename: " + filename + "  Status: " + isSheetMusic  +"\t" );}
+    	
+    	else{
+    		return (0 + "\t" + "Filename: " + filename + "  Status: " + isSheetMusic  +"\t" );}
+    }
+    
+    private static boolean Classifier(BufferedImage img){
+    System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
+    try {
+    	//Read file
+    	//BufferedImage img = ImageIO.read(new File(processedFile));
+        int x = img.getWidth();
+        int y = img.getHeight();
+        int pixelCount  = 0;
+        int redCount    = 0;
+        float percentage = 0;
+
+        //Go Thru every pixel
+        for(int i=0; i < y; i++){
+        	for(int j=0;j < x; j++){
+            	//Get value for current pixels RGB value
+                int currPixelRGB = img.getRGB(j, i);
+                //Check if pixel is red (hex value of red)
+                if(currPixelRGB == 0xFFFF0000){
+                    redCount++;
+                }
+                pixelCount++;
+            }
+       	}
+       	//Calculate percentage of Red in image
+       	percentage = ((float)redCount/(float)pixelCount)*(float)100;
+    
+              
+        //If more than %10 and less than %50 then its sheet music!
+        if(percentage > 10 && percentage < 50){ //MAKE THESE CONSTANTS!!
+        	return true;}
+        }
+        catch (Exception e) {
+            System.err.println(e);
+        }
+        return false;
+    }
+
+        private static  BufferedImage toBufferedImage(Mat mat){
+        //MOSTLY COPY PASTE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+        //MOSTLY COPY PASTE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+        //https://riptutorial.com/opencv/example/21963/converting-an-mat-object-to-an-bufferedimage-object
+        try{
+	    
+            int type = BufferedImage.TYPE_3BYTE_BGR;
+            int bufferSize = mat.channels() * mat.cols() * mat.rows();
+            byte[] b = new byte[bufferSize];
+            //get all the pixels
+            mat.get(0, 0, b);
+            BufferedImage image = new BufferedImage(mat.cols(), mat.rows(), type);
+            final byte[] targetPixels = ((DataBufferByte) image.getRaster().getDataBuffer()).getData();
+            System.arraycopy(b, 0, targetPixels, 0, b.length);
+            return image;
+        }
+        catch(Exception e){
+            System.err.println(e);
+        }
+        return null;
+    }
+
+ 
+}
Index: /other-projects/is-sheet-music-encore/trunk/image-identification-terminal/results.txt
===================================================================
--- /other-projects/is-sheet-music-encore/trunk/image-identification-terminal/results.txt	(revision 33097)
+++ /other-projects/is-sheet-music-encore/trunk/image-identification-terminal/results.txt	(revision 33097)
@@ -0,0 +1,1 @@
+Classifier:Probabilistic HoughLines	100.0%
Index: /other-projects/is-sheet-music-encore/trunk/image-identification-terminal/testClassifer.sh
===================================================================
--- /other-projects/is-sheet-music-encore/trunk/image-identification-terminal/testClassifer.sh	(revision 33097)
+++ /other-projects/is-sheet-music-encore/trunk/image-identification-terminal/testClassifer.sh	(revision 33097)
@@ -0,0 +1,18 @@
+#!/bin/bash
+
+if [ $# != 2 ] ; then 
+  echo "Usage: ./testClassifier.sh file_name classifier_type" 1>&2
+  exit 1
+fi
+
+folder_name=$1
+classifier_type=$2
+
+for file_name in $folder_name/*.png; do
+	echo $file_name
+	echo ""
+	java -cp /Scratch/cpb16/opencv-3.4.2/build/bin/opencv-342.jar:. -Djava.library.path=/Scratch/cpb16/opencv-3.4.2/build/lib/  javaImageClassifier $file_name $classifier_type
+done
+
+
+
