| Server IP : 162.214.74.102 / Your IP : 216.73.216.192 Web Server : Apache System : Linux dedi-4363141.lrsys.com.br 3.10.0-1160.119.1.el7.tuxcare.els25.x86_64 #1 SMP Wed Oct 1 17:37:27 UTC 2025 x86_64 User : lrsys ( 1015) PHP Version : 5.6.40 Disable Function : exec,passthru,shell_exec,system MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /home/lrsys/www/lrsys_apps/marisol/AR/three.js/src/threex/threex-aruco/ |
Upload File : |
var THREEx = THREEx || {}
THREEx.ArucoDebug = function(arucoContext){
this.arucoContext = arucoContext
// TODO to rename canvasElement into canvas
this.canvasElement = document.createElement('canvas');
this.canvasElement.width = this.arucoContext.canvas.width
this.canvasElement.height = this.arucoContext.canvas.height
}
THREEx.ArucoDebug.prototype.setSize = function (width, height) {
if( this.canvasElement.width !== width ) this.canvasElement.width = width
if( this.canvasElement.height !== height ) this.canvasElement.height = height
}
THREEx.ArucoDebug.prototype.clear = function(){
var canvas = this.canvasElement
var context = canvas.getContext('2d');
context.clearRect(0,0,canvas.width, canvas.height)
}
THREEx.ArucoDebug.prototype.drawContoursContours = function(){
var contours = this.arucoContext.detector.contours
var canvas = this.canvasElement
this.drawContours(contours, 0, 0, canvas.width, canvas.height, function(hole){
return hole? "magenta": "blue"
})
}
THREEx.ArucoDebug.prototype.drawContoursPolys = function(){
var contours = this.arucoContext.detector.polys
var canvas = this.canvasElement
this.drawContours(contours, 0, 0, canvas.width, canvas.height, function(){
return 'green'
})
}
THREEx.ArucoDebug.prototype.drawContoursCandidates = function(){
var contours = this.arucoContext.detector.candidates
var canvas = this.canvasElement
this.drawContours(contours, 0, 0, canvas.width, canvas.height, function(){
return 'red'
})
}
THREEx.ArucoDebug.prototype.drawContours = function(contours, x, y, width, height, fn){
var i = contours.length, j, contour, point;
var canvas = this.canvasElement
var context = canvas.getContext('2d');
context.save();
while(i --){
contour = contours[i];
context.strokeStyle = fn(contour.hole);
context.beginPath();
for (j = 0; j < contour.length; ++ j){
point = contour[j];
context.moveTo(x + point.x, y + point.y);
point = contour[(j + 1) % contour.length];
context.lineTo(x + point.x, y + point.y);
}
context.stroke();
context.closePath();
}
context.restore();
}
//////////////////////////////////////////////////////////////////////////////
// Code Separator
//////////////////////////////////////////////////////////////////////////////
THREEx.ArucoDebug.prototype.drawDetectorGrey = function(){
var cvImage = arucoContext.detector.grey
this.drawCVImage( cvImage )
}
THREEx.ArucoDebug.prototype.drawDetectorThreshold = function(){
var cvImage = arucoContext.detector.thres
this.drawCVImage( cvImage )
}
//////////////////////////////////////////////////////////////////////////////
// Code Separator
//////////////////////////////////////////////////////////////////////////////
THREEx.ArucoDebug.prototype.drawCVImage = function(cvImage){
var detector = this.arucoContext.detector
var canvas = this.canvasElement
var context = canvas.getContext('2d');
var imageData = context.createImageData(canvas.width, canvas.height);
this.copyCVImage2ImageData(cvImage, imageData)
context.putImageData( imageData, 0, 0);
}
THREEx.ArucoDebug.prototype.copyCVImage2ImageData = function(cvImage, imageData){
var i = cvImage.data.length, j = (i * 4) + 3;
while(i --){
imageData.data[j -= 4] = 255;
imageData.data[j - 1] = imageData.data[j - 2] = imageData.data[j - 3] = cvImage.data[i];
}
return imageData;
};
//////////////////////////////////////////////////////////////////////////////
// Code Separator
//////////////////////////////////////////////////////////////////////////////
THREEx.ArucoDebug.prototype.drawVideo = function(videoElement){
var canvas = this.canvasElement
var context = canvas.getContext('2d');
context.drawImage(videoElement, 0, 0, canvas.width, canvas.height);
}
//////////////////////////////////////////////////////////////////////////////
// Code Separator
//////////////////////////////////////////////////////////////////////////////
THREEx.ArucoDebug.prototype.drawMarkerIDs = function(markers){
var canvas = this.canvasElement
var context = canvas.getContext('2d');
var corners, corner, x, y, i, j;
context.save();
context.strokeStyle = "blue";
context.lineWidth = 1;
for (i = 0; i !== markers.length; ++ i){
corners = markers[i].corners;
x = Infinity;
y = Infinity;
for (j = 0; j !== corners.length; ++ j){
corner = corners[j];
x = Math.min(x, corner.x);
y = Math.min(y, corner.y);
}
context.strokeText(markers[i].id, x, y)
}
context.restore();
}
//////////////////////////////////////////////////////////////////////////////
// Code Separator
//////////////////////////////////////////////////////////////////////////////
THREEx.ArucoDebug.prototype.drawMarkerCorners = function(markers){
var canvas = this.canvasElement
var corners, corner, i, j;
var context = canvas.getContext('2d');
context.save();
context.lineWidth = 3;
for (i = 0; i < markers.length; ++ i){
corners = markers[i].corners;
context.strokeStyle = 'red';
context.beginPath();
for (j = 0; j < corners.length; ++ j){
corner = corners[j];
context.moveTo(corner.x, corner.y);
corner = corners[(j + 1) % corners.length];
context.lineTo(corner.x, corner.y);
}
context.stroke();
context.closePath();
context.strokeStyle = 'green';
context.strokeRect(corners[0].x - 2, corners[0].y - 2, 4, 4);
}
context.restore();
}