Files
PhotonVision/photon-client/src/plugins/ColorPicker.js

125 lines
4.3 KiB
JavaScript
Raw Normal View History

V2.1 (#37) * Toggle mode * RangeSlider able to be disabled * Added another window from the press of the button * removed warning * Major changes to colorpicker page * Major changes to threshold tab * fix for BGR not RGB * Reverted changes of colorpicker.vue * Updated Readme.md Mainly Development Setup * Update readme small changes * updated readme.md Authors credit update * updated readme.md added usb camera to hardware * Updated UI readme added nodejs installation and explanation * Unit test vision (and implement networktable sending) * finished color picker in the ui * bugfix for correct tab * cleanup and commenting * Reveted changes to range slider * bug fix for color picker * Pipeline mat copy fix * Added crosshair pipe * compilation fix * removed unsued comment * moved calibration stuff to static class under 2d pipeline settings * Added debug print commented * Reverted subclass "Calibration" Fixed bug where single point calibration causes crash when no target is found * disable dual point crosshair for now * Proper no target found fix, and snackbar error now showing * Removed java fix for crash bug * fixed problem with clear points in single point calibration * change compatator to sqared values to make caluclation faster (no need for sqare root function) * fixed roated camera too heigh for the UI * Revert "fixed roated camera too heigh for the UI" This reverts commit 50c8ecd34560ac0171b8d7497bec2e2d1d93d43f. * fixed rotated camera too heigh for UI and corrected scalling * updated pom to fix the camera buffer issue * added pom variables * Created new CaptureStaticProperties when rotating cam * File stucture change, moved Pipeline implementation and their settings to /impl folder, refracted imports * ignore auto created iml file * ignore auto created iml file * Fix lack of access problems after moving pipleline impl out of the same package * Removed commented lines * Fixed bug when selecting the same 90 deg rotation twice causes crosshair to move * cleaned up single point calibration and bug fixed isBinary in driverMode * Enum fix for the UI * typo * fixed Stream divisor problems see issue 19 in github issues * fixed compilation error for test class * Fixed problem when rotating camera with stream divisor * Spelling + button style change * Add speed limit to UI Updates * Added runtime arg to fix settings permissions, and on-first-init * Added FileHelper class to manage setting permissions for all files. * Removed unnecessary argument * NT can set pipeline to out on bound indexes * bugfix in platform check * added pipeline popup * Round steam divisor resolution * added regex test for camera name and pipe name * Fix for Renaming pipeline leaves old config file #14 * Version change * adde ( ) - and . to regex * Replace NT timestamp with latency * added back NT flush * Add solvePNP, 3d tab on the UI, and some other misc bug fixes (#35) * Rebase solvePNP on master * added 3D tab minimap and csv reader * More solvePNP * Create draw pipe for pnp data * SolvePNP piping work * Move sorting into solvepnppipe * Create calibration pipeline * Update CalibrateSolvePNPPipeline.java * add camera tilt angle * Add calibration slider and snapshot button to 3D view * Mirror updates in the socket handler * add 3d calibration mode to the pipeline manager * created calibration functions in ui and backend * Start plumbing calibration * Add snapshot and other handling to the RequestHandler * added select resolution before starting calibration * Rename solvePNPPipe to bounding box solve pnp pipe * Update BoundingBoxSolvePNPPipe.java * Add Mat serializer and CameraCalibrationConfig * Begun calibration saving, fixed UI/Backend snapshot count mismatch * Add (unplumbed) option to set checkerboard size This will allow users to change the units their calibration is in * Create chessboard.png * Fix calibration NPE * changed string serialization to a json send * bug fixed cancellation button * Fix spelling of snapshot in 3d.vue * Plumb resolution change * Set resolution during config, start on config serialization * Update .gitignore * Config fixes * Start transition away from cvpipeline3d * fix NPE on uncalibrated cameras * clear list on fail * Fix video mode index error * ignore getters in camera calibration config * Create json constructor for jsonmat * get solvePNP mostly returning sane values * Fix solvePNP bug and add unit test * FIx calibration mat truncation * added capture amount model upload and minimap data * Standardize on meters in calibration and bounding box * fix json out of bounds and handle null calibration more gracefully * don't put text on calibrate image, go back to inches * convert distance to meters this means calibration will need to be in inches * Actually save raw contor * Update GroupContoursPipe.java * Add all calibration return to camera capture * hard code 2019 target * bugfixed draw2d added fail calib popup, merge end and cancel added the res index to the calib start * Clarify error message and draw more fancy rectangles * Cleanup memory in solvepnp * re did minimap component * fix npe if left/right is null * remove references to 2d * try-catch running the current pipeline * Add method to find corners using the harris corner detector * Possibly fix left/right missmatch * Fix 3D Tab error * FIx file permissions, mat serializer adjustments * fixed mini map for field coordinates * mini map changes fov * Update SolvePNPPipe.java * get rid of target corners * some memory leak fixes * fixed mini map location * added position under minimap * changed player fov look * put all targets in the web send * re did target send to ui added target tables, bugfix calibration * fixed y position * Add tilt angle to capture properties * maybe fix y axis in minimap * Add square size to onCalibrationEnding * Possibly add square size to UI * fix NPE with pitch * Fix bug with sending multiple targets * Only instantiate 3d stuff if we are in 3d mode * Fix array list exceptions * Fix bug in sort contors list was truncated too early * added download chess, tilt setting and ordinal tilt, * added square size connection * removed unused code * Update pom version to 2.1-RELEASE * Send camera calibrations to UI * Stream pose list to a LIst * Only stream necessary parts of the aux list entry * Make broadcastMessage synchronized to prevent ConcurrentModificationExceptions * added fps counter changed squaresize steps bug fixes in tables * bugfix camera settings cam wont change Authored-by: oriagranat9 <oriagranat9@gmail.com> * disable pose print * standardize on calibration in inches and add square size as a divisor This should do the same thing as calibrating in the correct units but it doesnt like meeeeee * updated pom for release, 3d calibration change, cosmetic changes * WIP: 3D res filter * bug fix in index parsing * add good features to track point finder * offset found corners by old tl position * Add method to find most extreme per-quadrant points for solvePNP * re did pipeline duplication * Add release method to standard cv pipeline * remove contor from tracked target * Explicitly release all the intermediate results * avoid creating new mats in group contors pipe * removed mat release * updated pom * Actually cache the last target We were trying to but i never hooked this part up * Fix memory leak in sort contros pipe * Fix memory leak in sort contors pipe * Help more with memory usage in speckle reject and draw pipes * minor bugfixes to the ui * Start moving stream into vision process Should probs move into a pipe to be idimatic * justify bug fix * Fix sort left/right bug * Fix target grouping bug * Avoid allocating a new mat in solvePNP, perf. increases in group contors pipe * Event scripts (#36) * Begin scripting work * More scripting work * Finalize scripting system * Begin implementing script events * Finalize script system Co-authored-by: Banks T <btrout.dhrs@gmail.com> Co-authored-by: OmerZ7 <zipory.omer@gmail.com> Co-authored-by: Matt <matthew.morley.ca@gmail.com> Co-authored-by: Banks T <btrout.dhrs@gmail.com>
2020-01-04 11:53:18 -08:00
var canvas = undefined;
var image = undefined;
function initColorPicker() {
if (!canvas)
canvas = document.createElement('canvas');
image = document.querySelector('#normal-stream');
V2.1 (#37) * Toggle mode * RangeSlider able to be disabled * Added another window from the press of the button * removed warning * Major changes to colorpicker page * Major changes to threshold tab * fix for BGR not RGB * Reverted changes of colorpicker.vue * Updated Readme.md Mainly Development Setup * Update readme small changes * updated readme.md Authors credit update * updated readme.md added usb camera to hardware * Updated UI readme added nodejs installation and explanation * Unit test vision (and implement networktable sending) * finished color picker in the ui * bugfix for correct tab * cleanup and commenting * Reveted changes to range slider * bug fix for color picker * Pipeline mat copy fix * Added crosshair pipe * compilation fix * removed unsued comment * moved calibration stuff to static class under 2d pipeline settings * Added debug print commented * Reverted subclass "Calibration" Fixed bug where single point calibration causes crash when no target is found * disable dual point crosshair for now * Proper no target found fix, and snackbar error now showing * Removed java fix for crash bug * fixed problem with clear points in single point calibration * change compatator to sqared values to make caluclation faster (no need for sqare root function) * fixed roated camera too heigh for the UI * Revert "fixed roated camera too heigh for the UI" This reverts commit 50c8ecd34560ac0171b8d7497bec2e2d1d93d43f. * fixed rotated camera too heigh for UI and corrected scalling * updated pom to fix the camera buffer issue * added pom variables * Created new CaptureStaticProperties when rotating cam * File stucture change, moved Pipeline implementation and their settings to /impl folder, refracted imports * ignore auto created iml file * ignore auto created iml file * Fix lack of access problems after moving pipleline impl out of the same package * Removed commented lines * Fixed bug when selecting the same 90 deg rotation twice causes crosshair to move * cleaned up single point calibration and bug fixed isBinary in driverMode * Enum fix for the UI * typo * fixed Stream divisor problems see issue 19 in github issues * fixed compilation error for test class * Fixed problem when rotating camera with stream divisor * Spelling + button style change * Add speed limit to UI Updates * Added runtime arg to fix settings permissions, and on-first-init * Added FileHelper class to manage setting permissions for all files. * Removed unnecessary argument * NT can set pipeline to out on bound indexes * bugfix in platform check * added pipeline popup * Round steam divisor resolution * added regex test for camera name and pipe name * Fix for Renaming pipeline leaves old config file #14 * Version change * adde ( ) - and . to regex * Replace NT timestamp with latency * added back NT flush * Add solvePNP, 3d tab on the UI, and some other misc bug fixes (#35) * Rebase solvePNP on master * added 3D tab minimap and csv reader * More solvePNP * Create draw pipe for pnp data * SolvePNP piping work * Move sorting into solvepnppipe * Create calibration pipeline * Update CalibrateSolvePNPPipeline.java * add camera tilt angle * Add calibration slider and snapshot button to 3D view * Mirror updates in the socket handler * add 3d calibration mode to the pipeline manager * created calibration functions in ui and backend * Start plumbing calibration * Add snapshot and other handling to the RequestHandler * added select resolution before starting calibration * Rename solvePNPPipe to bounding box solve pnp pipe * Update BoundingBoxSolvePNPPipe.java * Add Mat serializer and CameraCalibrationConfig * Begun calibration saving, fixed UI/Backend snapshot count mismatch * Add (unplumbed) option to set checkerboard size This will allow users to change the units their calibration is in * Create chessboard.png * Fix calibration NPE * changed string serialization to a json send * bug fixed cancellation button * Fix spelling of snapshot in 3d.vue * Plumb resolution change * Set resolution during config, start on config serialization * Update .gitignore * Config fixes * Start transition away from cvpipeline3d * fix NPE on uncalibrated cameras * clear list on fail * Fix video mode index error * ignore getters in camera calibration config * Create json constructor for jsonmat * get solvePNP mostly returning sane values * Fix solvePNP bug and add unit test * FIx calibration mat truncation * added capture amount model upload and minimap data * Standardize on meters in calibration and bounding box * fix json out of bounds and handle null calibration more gracefully * don't put text on calibrate image, go back to inches * convert distance to meters this means calibration will need to be in inches * Actually save raw contor * Update GroupContoursPipe.java * Add all calibration return to camera capture * hard code 2019 target * bugfixed draw2d added fail calib popup, merge end and cancel added the res index to the calib start * Clarify error message and draw more fancy rectangles * Cleanup memory in solvepnp * re did minimap component * fix npe if left/right is null * remove references to 2d * try-catch running the current pipeline * Add method to find corners using the harris corner detector * Possibly fix left/right missmatch * Fix 3D Tab error * FIx file permissions, mat serializer adjustments * fixed mini map for field coordinates * mini map changes fov * Update SolvePNPPipe.java * get rid of target corners * some memory leak fixes * fixed mini map location * added position under minimap * changed player fov look * put all targets in the web send * re did target send to ui added target tables, bugfix calibration * fixed y position * Add tilt angle to capture properties * maybe fix y axis in minimap * Add square size to onCalibrationEnding * Possibly add square size to UI * fix NPE with pitch * Fix bug with sending multiple targets * Only instantiate 3d stuff if we are in 3d mode * Fix array list exceptions * Fix bug in sort contors list was truncated too early * added download chess, tilt setting and ordinal tilt, * added square size connection * removed unused code * Update pom version to 2.1-RELEASE * Send camera calibrations to UI * Stream pose list to a LIst * Only stream necessary parts of the aux list entry * Make broadcastMessage synchronized to prevent ConcurrentModificationExceptions * added fps counter changed squaresize steps bug fixes in tables * bugfix camera settings cam wont change Authored-by: oriagranat9 <oriagranat9@gmail.com> * disable pose print * standardize on calibration in inches and add square size as a divisor This should do the same thing as calibrating in the correct units but it doesnt like meeeeee * updated pom for release, 3d calibration change, cosmetic changes * WIP: 3D res filter * bug fix in index parsing * add good features to track point finder * offset found corners by old tl position * Add method to find most extreme per-quadrant points for solvePNP * re did pipeline duplication * Add release method to standard cv pipeline * remove contor from tracked target * Explicitly release all the intermediate results * avoid creating new mats in group contors pipe * removed mat release * updated pom * Actually cache the last target We were trying to but i never hooked this part up * Fix memory leak in sort contros pipe * Fix memory leak in sort contors pipe * Help more with memory usage in speckle reject and draw pipes * minor bugfixes to the ui * Start moving stream into vision process Should probs move into a pipe to be idimatic * justify bug fix * Fix sort left/right bug * Fix target grouping bug * Avoid allocating a new mat in solvePNP, perf. increases in group contors pipe * Event scripts (#36) * Begin scripting work * More scripting work * Finalize scripting system * Begin implementing script events * Finalize script system Co-authored-by: Banks T <btrout.dhrs@gmail.com> Co-authored-by: OmerZ7 <zipory.omer@gmail.com> Co-authored-by: Matt <matthew.morley.ca@gmail.com> Co-authored-by: Banks T <btrout.dhrs@gmail.com>
2020-01-04 11:53:18 -08:00
canvas.width = image.width;
canvas.height = image.height;
}
//Called on click of the image,
//Finds X,Y of the mouse on the image,
//Draws the image on the (invisible) canvas
//Reads the color values (pixelData) in X,Y of the canvas
//calls the function to handle the button (either eyedrop,expand or shrink)
function colorPickerClick(event, currentFunction, currentRange) {
let rect = image.getBoundingClientRect();
let x = Math.round((event.clientX - rect.left) / rect.width * image.width);
let y = Math.round((event.clientY - rect.top) / rect.height * image.height);
V2.1 (#37) * Toggle mode * RangeSlider able to be disabled * Added another window from the press of the button * removed warning * Major changes to colorpicker page * Major changes to threshold tab * fix for BGR not RGB * Reverted changes of colorpicker.vue * Updated Readme.md Mainly Development Setup * Update readme small changes * updated readme.md Authors credit update * updated readme.md added usb camera to hardware * Updated UI readme added nodejs installation and explanation * Unit test vision (and implement networktable sending) * finished color picker in the ui * bugfix for correct tab * cleanup and commenting * Reveted changes to range slider * bug fix for color picker * Pipeline mat copy fix * Added crosshair pipe * compilation fix * removed unsued comment * moved calibration stuff to static class under 2d pipeline settings * Added debug print commented * Reverted subclass "Calibration" Fixed bug where single point calibration causes crash when no target is found * disable dual point crosshair for now * Proper no target found fix, and snackbar error now showing * Removed java fix for crash bug * fixed problem with clear points in single point calibration * change compatator to sqared values to make caluclation faster (no need for sqare root function) * fixed roated camera too heigh for the UI * Revert "fixed roated camera too heigh for the UI" This reverts commit 50c8ecd34560ac0171b8d7497bec2e2d1d93d43f. * fixed rotated camera too heigh for UI and corrected scalling * updated pom to fix the camera buffer issue * added pom variables * Created new CaptureStaticProperties when rotating cam * File stucture change, moved Pipeline implementation and their settings to /impl folder, refracted imports * ignore auto created iml file * ignore auto created iml file * Fix lack of access problems after moving pipleline impl out of the same package * Removed commented lines * Fixed bug when selecting the same 90 deg rotation twice causes crosshair to move * cleaned up single point calibration and bug fixed isBinary in driverMode * Enum fix for the UI * typo * fixed Stream divisor problems see issue 19 in github issues * fixed compilation error for test class * Fixed problem when rotating camera with stream divisor * Spelling + button style change * Add speed limit to UI Updates * Added runtime arg to fix settings permissions, and on-first-init * Added FileHelper class to manage setting permissions for all files. * Removed unnecessary argument * NT can set pipeline to out on bound indexes * bugfix in platform check * added pipeline popup * Round steam divisor resolution * added regex test for camera name and pipe name * Fix for Renaming pipeline leaves old config file #14 * Version change * adde ( ) - and . to regex * Replace NT timestamp with latency * added back NT flush * Add solvePNP, 3d tab on the UI, and some other misc bug fixes (#35) * Rebase solvePNP on master * added 3D tab minimap and csv reader * More solvePNP * Create draw pipe for pnp data * SolvePNP piping work * Move sorting into solvepnppipe * Create calibration pipeline * Update CalibrateSolvePNPPipeline.java * add camera tilt angle * Add calibration slider and snapshot button to 3D view * Mirror updates in the socket handler * add 3d calibration mode to the pipeline manager * created calibration functions in ui and backend * Start plumbing calibration * Add snapshot and other handling to the RequestHandler * added select resolution before starting calibration * Rename solvePNPPipe to bounding box solve pnp pipe * Update BoundingBoxSolvePNPPipe.java * Add Mat serializer and CameraCalibrationConfig * Begun calibration saving, fixed UI/Backend snapshot count mismatch * Add (unplumbed) option to set checkerboard size This will allow users to change the units their calibration is in * Create chessboard.png * Fix calibration NPE * changed string serialization to a json send * bug fixed cancellation button * Fix spelling of snapshot in 3d.vue * Plumb resolution change * Set resolution during config, start on config serialization * Update .gitignore * Config fixes * Start transition away from cvpipeline3d * fix NPE on uncalibrated cameras * clear list on fail * Fix video mode index error * ignore getters in camera calibration config * Create json constructor for jsonmat * get solvePNP mostly returning sane values * Fix solvePNP bug and add unit test * FIx calibration mat truncation * added capture amount model upload and minimap data * Standardize on meters in calibration and bounding box * fix json out of bounds and handle null calibration more gracefully * don't put text on calibrate image, go back to inches * convert distance to meters this means calibration will need to be in inches * Actually save raw contor * Update GroupContoursPipe.java * Add all calibration return to camera capture * hard code 2019 target * bugfixed draw2d added fail calib popup, merge end and cancel added the res index to the calib start * Clarify error message and draw more fancy rectangles * Cleanup memory in solvepnp * re did minimap component * fix npe if left/right is null * remove references to 2d * try-catch running the current pipeline * Add method to find corners using the harris corner detector * Possibly fix left/right missmatch * Fix 3D Tab error * FIx file permissions, mat serializer adjustments * fixed mini map for field coordinates * mini map changes fov * Update SolvePNPPipe.java * get rid of target corners * some memory leak fixes * fixed mini map location * added position under minimap * changed player fov look * put all targets in the web send * re did target send to ui added target tables, bugfix calibration * fixed y position * Add tilt angle to capture properties * maybe fix y axis in minimap * Add square size to onCalibrationEnding * Possibly add square size to UI * fix NPE with pitch * Fix bug with sending multiple targets * Only instantiate 3d stuff if we are in 3d mode * Fix array list exceptions * Fix bug in sort contors list was truncated too early * added download chess, tilt setting and ordinal tilt, * added square size connection * removed unused code * Update pom version to 2.1-RELEASE * Send camera calibrations to UI * Stream pose list to a LIst * Only stream necessary parts of the aux list entry * Make broadcastMessage synchronized to prevent ConcurrentModificationExceptions * added fps counter changed squaresize steps bug fixes in tables * bugfix camera settings cam wont change Authored-by: oriagranat9 <oriagranat9@gmail.com> * disable pose print * standardize on calibration in inches and add square size as a divisor This should do the same thing as calibrating in the correct units but it doesnt like meeeeee * updated pom for release, 3d calibration change, cosmetic changes * WIP: 3D res filter * bug fix in index parsing * add good features to track point finder * offset found corners by old tl position * Add method to find most extreme per-quadrant points for solvePNP * re did pipeline duplication * Add release method to standard cv pipeline * remove contor from tracked target * Explicitly release all the intermediate results * avoid creating new mats in group contors pipe * removed mat release * updated pom * Actually cache the last target We were trying to but i never hooked this part up * Fix memory leak in sort contros pipe * Fix memory leak in sort contors pipe * Help more with memory usage in speckle reject and draw pipes * minor bugfixes to the ui * Start moving stream into vision process Should probs move into a pipe to be idimatic * justify bug fix * Fix sort left/right bug * Fix target grouping bug * Avoid allocating a new mat in solvePNP, perf. increases in group contors pipe * Event scripts (#36) * Begin scripting work * More scripting work * Finalize scripting system * Begin implementing script events * Finalize script system Co-authored-by: Banks T <btrout.dhrs@gmail.com> Co-authored-by: OmerZ7 <zipory.omer@gmail.com> Co-authored-by: Matt <matthew.morley.ca@gmail.com> Co-authored-by: Banks T <btrout.dhrs@gmail.com>
2020-01-04 11:53:18 -08:00
let context = canvas.getContext('2d');
context.drawImage(image, 0, 0, image.width, image.height);
let pixelData = context.getImageData(x, y, 1, 1).data;
V2.1 (#37) * Toggle mode * RangeSlider able to be disabled * Added another window from the press of the button * removed warning * Major changes to colorpicker page * Major changes to threshold tab * fix for BGR not RGB * Reverted changes of colorpicker.vue * Updated Readme.md Mainly Development Setup * Update readme small changes * updated readme.md Authors credit update * updated readme.md added usb camera to hardware * Updated UI readme added nodejs installation and explanation * Unit test vision (and implement networktable sending) * finished color picker in the ui * bugfix for correct tab * cleanup and commenting * Reveted changes to range slider * bug fix for color picker * Pipeline mat copy fix * Added crosshair pipe * compilation fix * removed unsued comment * moved calibration stuff to static class under 2d pipeline settings * Added debug print commented * Reverted subclass "Calibration" Fixed bug where single point calibration causes crash when no target is found * disable dual point crosshair for now * Proper no target found fix, and snackbar error now showing * Removed java fix for crash bug * fixed problem with clear points in single point calibration * change compatator to sqared values to make caluclation faster (no need for sqare root function) * fixed roated camera too heigh for the UI * Revert "fixed roated camera too heigh for the UI" This reverts commit 50c8ecd34560ac0171b8d7497bec2e2d1d93d43f. * fixed rotated camera too heigh for UI and corrected scalling * updated pom to fix the camera buffer issue * added pom variables * Created new CaptureStaticProperties when rotating cam * File stucture change, moved Pipeline implementation and their settings to /impl folder, refracted imports * ignore auto created iml file * ignore auto created iml file * Fix lack of access problems after moving pipleline impl out of the same package * Removed commented lines * Fixed bug when selecting the same 90 deg rotation twice causes crosshair to move * cleaned up single point calibration and bug fixed isBinary in driverMode * Enum fix for the UI * typo * fixed Stream divisor problems see issue 19 in github issues * fixed compilation error for test class * Fixed problem when rotating camera with stream divisor * Spelling + button style change * Add speed limit to UI Updates * Added runtime arg to fix settings permissions, and on-first-init * Added FileHelper class to manage setting permissions for all files. * Removed unnecessary argument * NT can set pipeline to out on bound indexes * bugfix in platform check * added pipeline popup * Round steam divisor resolution * added regex test for camera name and pipe name * Fix for Renaming pipeline leaves old config file #14 * Version change * adde ( ) - and . to regex * Replace NT timestamp with latency * added back NT flush * Add solvePNP, 3d tab on the UI, and some other misc bug fixes (#35) * Rebase solvePNP on master * added 3D tab minimap and csv reader * More solvePNP * Create draw pipe for pnp data * SolvePNP piping work * Move sorting into solvepnppipe * Create calibration pipeline * Update CalibrateSolvePNPPipeline.java * add camera tilt angle * Add calibration slider and snapshot button to 3D view * Mirror updates in the socket handler * add 3d calibration mode to the pipeline manager * created calibration functions in ui and backend * Start plumbing calibration * Add snapshot and other handling to the RequestHandler * added select resolution before starting calibration * Rename solvePNPPipe to bounding box solve pnp pipe * Update BoundingBoxSolvePNPPipe.java * Add Mat serializer and CameraCalibrationConfig * Begun calibration saving, fixed UI/Backend snapshot count mismatch * Add (unplumbed) option to set checkerboard size This will allow users to change the units their calibration is in * Create chessboard.png * Fix calibration NPE * changed string serialization to a json send * bug fixed cancellation button * Fix spelling of snapshot in 3d.vue * Plumb resolution change * Set resolution during config, start on config serialization * Update .gitignore * Config fixes * Start transition away from cvpipeline3d * fix NPE on uncalibrated cameras * clear list on fail * Fix video mode index error * ignore getters in camera calibration config * Create json constructor for jsonmat * get solvePNP mostly returning sane values * Fix solvePNP bug and add unit test * FIx calibration mat truncation * added capture amount model upload and minimap data * Standardize on meters in calibration and bounding box * fix json out of bounds and handle null calibration more gracefully * don't put text on calibrate image, go back to inches * convert distance to meters this means calibration will need to be in inches * Actually save raw contor * Update GroupContoursPipe.java * Add all calibration return to camera capture * hard code 2019 target * bugfixed draw2d added fail calib popup, merge end and cancel added the res index to the calib start * Clarify error message and draw more fancy rectangles * Cleanup memory in solvepnp * re did minimap component * fix npe if left/right is null * remove references to 2d * try-catch running the current pipeline * Add method to find corners using the harris corner detector * Possibly fix left/right missmatch * Fix 3D Tab error * FIx file permissions, mat serializer adjustments * fixed mini map for field coordinates * mini map changes fov * Update SolvePNPPipe.java * get rid of target corners * some memory leak fixes * fixed mini map location * added position under minimap * changed player fov look * put all targets in the web send * re did target send to ui added target tables, bugfix calibration * fixed y position * Add tilt angle to capture properties * maybe fix y axis in minimap * Add square size to onCalibrationEnding * Possibly add square size to UI * fix NPE with pitch * Fix bug with sending multiple targets * Only instantiate 3d stuff if we are in 3d mode * Fix array list exceptions * Fix bug in sort contors list was truncated too early * added download chess, tilt setting and ordinal tilt, * added square size connection * removed unused code * Update pom version to 2.1-RELEASE * Send camera calibrations to UI * Stream pose list to a LIst * Only stream necessary parts of the aux list entry * Make broadcastMessage synchronized to prevent ConcurrentModificationExceptions * added fps counter changed squaresize steps bug fixes in tables * bugfix camera settings cam wont change Authored-by: oriagranat9 <oriagranat9@gmail.com> * disable pose print * standardize on calibration in inches and add square size as a divisor This should do the same thing as calibrating in the correct units but it doesnt like meeeeee * updated pom for release, 3d calibration change, cosmetic changes * WIP: 3D res filter * bug fix in index parsing * add good features to track point finder * offset found corners by old tl position * Add method to find most extreme per-quadrant points for solvePNP * re did pipeline duplication * Add release method to standard cv pipeline * remove contor from tracked target * Explicitly release all the intermediate results * avoid creating new mats in group contors pipe * removed mat release * updated pom * Actually cache the last target We were trying to but i never hooked this part up * Fix memory leak in sort contros pipe * Fix memory leak in sort contors pipe * Help more with memory usage in speckle reject and draw pipes * minor bugfixes to the ui * Start moving stream into vision process Should probs move into a pipe to be idimatic * justify bug fix * Fix sort left/right bug * Fix target grouping bug * Avoid allocating a new mat in solvePNP, perf. increases in group contors pipe * Event scripts (#36) * Begin scripting work * More scripting work * Finalize scripting system * Begin implementing script events * Finalize script system Co-authored-by: Banks T <btrout.dhrs@gmail.com> Co-authored-by: OmerZ7 <zipory.omer@gmail.com> Co-authored-by: Matt <matthew.morley.ca@gmail.com> Co-authored-by: Banks T <btrout.dhrs@gmail.com>
2020-01-04 11:53:18 -08:00
if (currentFunction !== undefined) {
return currentFunction(pixelData, currentRange);
}
}
function eyeDrop(pixel) {
let hsv = RGBtoHSV(pixel);
2020-03-19 14:02:49 +02:00
let range = widenRange([hsv, hsv.slice(0)]);//sends hsv and a copy of hsv
V2.1 (#37) * Toggle mode * RangeSlider able to be disabled * Added another window from the press of the button * removed warning * Major changes to colorpicker page * Major changes to threshold tab * fix for BGR not RGB * Reverted changes of colorpicker.vue * Updated Readme.md Mainly Development Setup * Update readme small changes * updated readme.md Authors credit update * updated readme.md added usb camera to hardware * Updated UI readme added nodejs installation and explanation * Unit test vision (and implement networktable sending) * finished color picker in the ui * bugfix for correct tab * cleanup and commenting * Reveted changes to range slider * bug fix for color picker * Pipeline mat copy fix * Added crosshair pipe * compilation fix * removed unsued comment * moved calibration stuff to static class under 2d pipeline settings * Added debug print commented * Reverted subclass "Calibration" Fixed bug where single point calibration causes crash when no target is found * disable dual point crosshair for now * Proper no target found fix, and snackbar error now showing * Removed java fix for crash bug * fixed problem with clear points in single point calibration * change compatator to sqared values to make caluclation faster (no need for sqare root function) * fixed roated camera too heigh for the UI * Revert "fixed roated camera too heigh for the UI" This reverts commit 50c8ecd34560ac0171b8d7497bec2e2d1d93d43f. * fixed rotated camera too heigh for UI and corrected scalling * updated pom to fix the camera buffer issue * added pom variables * Created new CaptureStaticProperties when rotating cam * File stucture change, moved Pipeline implementation and their settings to /impl folder, refracted imports * ignore auto created iml file * ignore auto created iml file * Fix lack of access problems after moving pipleline impl out of the same package * Removed commented lines * Fixed bug when selecting the same 90 deg rotation twice causes crosshair to move * cleaned up single point calibration and bug fixed isBinary in driverMode * Enum fix for the UI * typo * fixed Stream divisor problems see issue 19 in github issues * fixed compilation error for test class * Fixed problem when rotating camera with stream divisor * Spelling + button style change * Add speed limit to UI Updates * Added runtime arg to fix settings permissions, and on-first-init * Added FileHelper class to manage setting permissions for all files. * Removed unnecessary argument * NT can set pipeline to out on bound indexes * bugfix in platform check * added pipeline popup * Round steam divisor resolution * added regex test for camera name and pipe name * Fix for Renaming pipeline leaves old config file #14 * Version change * adde ( ) - and . to regex * Replace NT timestamp with latency * added back NT flush * Add solvePNP, 3d tab on the UI, and some other misc bug fixes (#35) * Rebase solvePNP on master * added 3D tab minimap and csv reader * More solvePNP * Create draw pipe for pnp data * SolvePNP piping work * Move sorting into solvepnppipe * Create calibration pipeline * Update CalibrateSolvePNPPipeline.java * add camera tilt angle * Add calibration slider and snapshot button to 3D view * Mirror updates in the socket handler * add 3d calibration mode to the pipeline manager * created calibration functions in ui and backend * Start plumbing calibration * Add snapshot and other handling to the RequestHandler * added select resolution before starting calibration * Rename solvePNPPipe to bounding box solve pnp pipe * Update BoundingBoxSolvePNPPipe.java * Add Mat serializer and CameraCalibrationConfig * Begun calibration saving, fixed UI/Backend snapshot count mismatch * Add (unplumbed) option to set checkerboard size This will allow users to change the units their calibration is in * Create chessboard.png * Fix calibration NPE * changed string serialization to a json send * bug fixed cancellation button * Fix spelling of snapshot in 3d.vue * Plumb resolution change * Set resolution during config, start on config serialization * Update .gitignore * Config fixes * Start transition away from cvpipeline3d * fix NPE on uncalibrated cameras * clear list on fail * Fix video mode index error * ignore getters in camera calibration config * Create json constructor for jsonmat * get solvePNP mostly returning sane values * Fix solvePNP bug and add unit test * FIx calibration mat truncation * added capture amount model upload and minimap data * Standardize on meters in calibration and bounding box * fix json out of bounds and handle null calibration more gracefully * don't put text on calibrate image, go back to inches * convert distance to meters this means calibration will need to be in inches * Actually save raw contor * Update GroupContoursPipe.java * Add all calibration return to camera capture * hard code 2019 target * bugfixed draw2d added fail calib popup, merge end and cancel added the res index to the calib start * Clarify error message and draw more fancy rectangles * Cleanup memory in solvepnp * re did minimap component * fix npe if left/right is null * remove references to 2d * try-catch running the current pipeline * Add method to find corners using the harris corner detector * Possibly fix left/right missmatch * Fix 3D Tab error * FIx file permissions, mat serializer adjustments * fixed mini map for field coordinates * mini map changes fov * Update SolvePNPPipe.java * get rid of target corners * some memory leak fixes * fixed mini map location * added position under minimap * changed player fov look * put all targets in the web send * re did target send to ui added target tables, bugfix calibration * fixed y position * Add tilt angle to capture properties * maybe fix y axis in minimap * Add square size to onCalibrationEnding * Possibly add square size to UI * fix NPE with pitch * Fix bug with sending multiple targets * Only instantiate 3d stuff if we are in 3d mode * Fix array list exceptions * Fix bug in sort contors list was truncated too early * added download chess, tilt setting and ordinal tilt, * added square size connection * removed unused code * Update pom version to 2.1-RELEASE * Send camera calibrations to UI * Stream pose list to a LIst * Only stream necessary parts of the aux list entry * Make broadcastMessage synchronized to prevent ConcurrentModificationExceptions * added fps counter changed squaresize steps bug fixes in tables * bugfix camera settings cam wont change Authored-by: oriagranat9 <oriagranat9@gmail.com> * disable pose print * standardize on calibration in inches and add square size as a divisor This should do the same thing as calibrating in the correct units but it doesnt like meeeeee * updated pom for release, 3d calibration change, cosmetic changes * WIP: 3D res filter * bug fix in index parsing * add good features to track point finder * offset found corners by old tl position * Add method to find most extreme per-quadrant points for solvePNP * re did pipeline duplication * Add release method to standard cv pipeline * remove contor from tracked target * Explicitly release all the intermediate results * avoid creating new mats in group contors pipe * removed mat release * updated pom * Actually cache the last target We were trying to but i never hooked this part up * Fix memory leak in sort contros pipe * Fix memory leak in sort contors pipe * Help more with memory usage in speckle reject and draw pipes * minor bugfixes to the ui * Start moving stream into vision process Should probs move into a pipe to be idimatic * justify bug fix * Fix sort left/right bug * Fix target grouping bug * Avoid allocating a new mat in solvePNP, perf. increases in group contors pipe * Event scripts (#36) * Begin scripting work * More scripting work * Finalize scripting system * Begin implementing script events * Finalize script system Co-authored-by: Banks T <btrout.dhrs@gmail.com> Co-authored-by: OmerZ7 <zipory.omer@gmail.com> Co-authored-by: Matt <matthew.morley.ca@gmail.com> Co-authored-by: Banks T <btrout.dhrs@gmail.com>
2020-01-04 11:53:18 -08:00
return range
}
function expand(pixel, currentRange) {
let hsv = RGBtoHSV(pixel);
let widenHSV = widenRange([[].concat(hsv), hsv]);
return createRange(currentRange.concat(widenHSV));
}
function shrink(pixel, currentRange) {
let hsv = RGBtoHSV(pixel);
let widenHSV = widenRange([[].concat(hsv), hsv]);
if (!shrinkRange(currentRange, widenHSV[0]))//Tries to shrink the lower part of the widen HSV
shrinkRange(currentRange, widenHSV[1]);//If the prev attempt failed, try to shrink the higher part of the widen HSV
return currentRange
}
//numbers is an array of 3 rgb values, returns array for 3 hsv values
function RGBtoHSV(numbers) {
let r = numbers[0],
g = numbers[1],
b = numbers[2];
r = r / 255;
g = g / 255;
b = b / 255;
let minRGB = Math.min(r, Math.min(g, b));
let maxRGB = Math.max(r, Math.max(g, b));
let d = (r === minRGB) ? g - b : ((b === minRGB) ? r - g : b - r);
let h = (r === minRGB) ? 3 : ((b === minRGB) ? 1 : 5);
let H = 30 * (h - d / (maxRGB - minRGB));
let S = 255 * (maxRGB - minRGB) / maxRGB;
let V = 255 * maxRGB;
if (isNaN(H))
H = 0;
if (isNaN(S))
S = 0;
if (isNaN(V))
V = 0;
return [Math.round(H), Math.round(S), Math.round(V)];
}
//Loops though the colors array, finds the smallest and biggest value for H,S and V. Returns the range containing every color
function createRange(HSVColors) {
let range = [[], []];
for (var i = 0; i < 3; i++) {
range[0][i] = HSVColors[0][i];
range[1][i] = HSVColors[0][i];
for (var j = HSVColors.length - 1; j >= 0; j--) {
range[0][i] = Math.min(HSVColors[j][i], range[0][i]);
range[1][i] = Math.max(HSVColors[j][i], range[1][i]);
}
}
return range;//[[Hmin,Smin,Vmin],[Hmax,Smax,Vmax]]
}
//This function adds 10 extra units to each side of the sliders, not to be confued with the expand selection button
function widenRange(range) {
let expanded = [[], []];
for (let i = 0; i < 3; i++) {
//Expanding the range by 10
expanded[0][i] = Math.max(0, range[0][i] - 10);
expanded[1][i] = Math.min(255, range[1][i] + 10);
}
expanded[1][0] = Math.min(180, expanded[1][0]);//h is up to 180
return expanded;
}
//If color in range then take the closer range value to color and set it to color plus or minus 10
//For example if hmax is 200 hmin is 100 and color's h is 120 range will become [130,200]
function shrinkRange(range, color) {
let inside = true;
for (let i = 0; i < color.length && inside; i++) {//Check if color is in range
if (!(range[0][i] <= color[i] <= range[1][i]))
inside = false;
}
if (inside) {
for (let j = 0; j < color.length; j++) {
if (color[j] - range[0][j] < range[1][j] - color[j])
range[0][j] = Math.min(range[0][j] + 10, range[1][j]);//shrink from min side
else
range[1][j] = Math.max(range[1][j] - 10, range[0][j]);//shrink from max side
}
}
V2.1 (#37) * Toggle mode * RangeSlider able to be disabled * Added another window from the press of the button * removed warning * Major changes to colorpicker page * Major changes to threshold tab * fix for BGR not RGB * Reverted changes of colorpicker.vue * Updated Readme.md Mainly Development Setup * Update readme small changes * updated readme.md Authors credit update * updated readme.md added usb camera to hardware * Updated UI readme added nodejs installation and explanation * Unit test vision (and implement networktable sending) * finished color picker in the ui * bugfix for correct tab * cleanup and commenting * Reveted changes to range slider * bug fix for color picker * Pipeline mat copy fix * Added crosshair pipe * compilation fix * removed unsued comment * moved calibration stuff to static class under 2d pipeline settings * Added debug print commented * Reverted subclass "Calibration" Fixed bug where single point calibration causes crash when no target is found * disable dual point crosshair for now * Proper no target found fix, and snackbar error now showing * Removed java fix for crash bug * fixed problem with clear points in single point calibration * change compatator to sqared values to make caluclation faster (no need for sqare root function) * fixed roated camera too heigh for the UI * Revert "fixed roated camera too heigh for the UI" This reverts commit 50c8ecd34560ac0171b8d7497bec2e2d1d93d43f. * fixed rotated camera too heigh for UI and corrected scalling * updated pom to fix the camera buffer issue * added pom variables * Created new CaptureStaticProperties when rotating cam * File stucture change, moved Pipeline implementation and their settings to /impl folder, refracted imports * ignore auto created iml file * ignore auto created iml file * Fix lack of access problems after moving pipleline impl out of the same package * Removed commented lines * Fixed bug when selecting the same 90 deg rotation twice causes crosshair to move * cleaned up single point calibration and bug fixed isBinary in driverMode * Enum fix for the UI * typo * fixed Stream divisor problems see issue 19 in github issues * fixed compilation error for test class * Fixed problem when rotating camera with stream divisor * Spelling + button style change * Add speed limit to UI Updates * Added runtime arg to fix settings permissions, and on-first-init * Added FileHelper class to manage setting permissions for all files. * Removed unnecessary argument * NT can set pipeline to out on bound indexes * bugfix in platform check * added pipeline popup * Round steam divisor resolution * added regex test for camera name and pipe name * Fix for Renaming pipeline leaves old config file #14 * Version change * adde ( ) - and . to regex * Replace NT timestamp with latency * added back NT flush * Add solvePNP, 3d tab on the UI, and some other misc bug fixes (#35) * Rebase solvePNP on master * added 3D tab minimap and csv reader * More solvePNP * Create draw pipe for pnp data * SolvePNP piping work * Move sorting into solvepnppipe * Create calibration pipeline * Update CalibrateSolvePNPPipeline.java * add camera tilt angle * Add calibration slider and snapshot button to 3D view * Mirror updates in the socket handler * add 3d calibration mode to the pipeline manager * created calibration functions in ui and backend * Start plumbing calibration * Add snapshot and other handling to the RequestHandler * added select resolution before starting calibration * Rename solvePNPPipe to bounding box solve pnp pipe * Update BoundingBoxSolvePNPPipe.java * Add Mat serializer and CameraCalibrationConfig * Begun calibration saving, fixed UI/Backend snapshot count mismatch * Add (unplumbed) option to set checkerboard size This will allow users to change the units their calibration is in * Create chessboard.png * Fix calibration NPE * changed string serialization to a json send * bug fixed cancellation button * Fix spelling of snapshot in 3d.vue * Plumb resolution change * Set resolution during config, start on config serialization * Update .gitignore * Config fixes * Start transition away from cvpipeline3d * fix NPE on uncalibrated cameras * clear list on fail * Fix video mode index error * ignore getters in camera calibration config * Create json constructor for jsonmat * get solvePNP mostly returning sane values * Fix solvePNP bug and add unit test * FIx calibration mat truncation * added capture amount model upload and minimap data * Standardize on meters in calibration and bounding box * fix json out of bounds and handle null calibration more gracefully * don't put text on calibrate image, go back to inches * convert distance to meters this means calibration will need to be in inches * Actually save raw contor * Update GroupContoursPipe.java * Add all calibration return to camera capture * hard code 2019 target * bugfixed draw2d added fail calib popup, merge end and cancel added the res index to the calib start * Clarify error message and draw more fancy rectangles * Cleanup memory in solvepnp * re did minimap component * fix npe if left/right is null * remove references to 2d * try-catch running the current pipeline * Add method to find corners using the harris corner detector * Possibly fix left/right missmatch * Fix 3D Tab error * FIx file permissions, mat serializer adjustments * fixed mini map for field coordinates * mini map changes fov * Update SolvePNPPipe.java * get rid of target corners * some memory leak fixes * fixed mini map location * added position under minimap * changed player fov look * put all targets in the web send * re did target send to ui added target tables, bugfix calibration * fixed y position * Add tilt angle to capture properties * maybe fix y axis in minimap * Add square size to onCalibrationEnding * Possibly add square size to UI * fix NPE with pitch * Fix bug with sending multiple targets * Only instantiate 3d stuff if we are in 3d mode * Fix array list exceptions * Fix bug in sort contors list was truncated too early * added download chess, tilt setting and ordinal tilt, * added square size connection * removed unused code * Update pom version to 2.1-RELEASE * Send camera calibrations to UI * Stream pose list to a LIst * Only stream necessary parts of the aux list entry * Make broadcastMessage synchronized to prevent ConcurrentModificationExceptions * added fps counter changed squaresize steps bug fixes in tables * bugfix camera settings cam wont change Authored-by: oriagranat9 <oriagranat9@gmail.com> * disable pose print * standardize on calibration in inches and add square size as a divisor This should do the same thing as calibrating in the correct units but it doesnt like meeeeee * updated pom for release, 3d calibration change, cosmetic changes * WIP: 3D res filter * bug fix in index parsing * add good features to track point finder * offset found corners by old tl position * Add method to find most extreme per-quadrant points for solvePNP * re did pipeline duplication * Add release method to standard cv pipeline * remove contor from tracked target * Explicitly release all the intermediate results * avoid creating new mats in group contors pipe * removed mat release * updated pom * Actually cache the last target We were trying to but i never hooked this part up * Fix memory leak in sort contros pipe * Fix memory leak in sort contors pipe * Help more with memory usage in speckle reject and draw pipes * minor bugfixes to the ui * Start moving stream into vision process Should probs move into a pipe to be idimatic * justify bug fix * Fix sort left/right bug * Fix target grouping bug * Avoid allocating a new mat in solvePNP, perf. increases in group contors pipe * Event scripts (#36) * Begin scripting work * More scripting work * Finalize scripting system * Begin implementing script events * Finalize script system Co-authored-by: Banks T <btrout.dhrs@gmail.com> Co-authored-by: OmerZ7 <zipory.omer@gmail.com> Co-authored-by: Matt <matthew.morley.ca@gmail.com> Co-authored-by: Banks T <btrout.dhrs@gmail.com>
2020-01-04 11:53:18 -08:00
return inside;//returns if color is inside or not
}
export default {initColorPicker, colorPickerClick, eyeDrop, expand, shrink}