Возможно, в вашем случае вы просто должны найти не фоновые пиксели, помещающиеся в прямоугольник.Эта версия будет работать только на светлом фоне.Вам нужно изменить его, чтобы он работал в других сценариях.
результат для двух логотипов:
код запуска ниже:
var canvas1 = document.getElementById("canvas1");
var canvas2 = document.getElementById("canvas2");
var image1 = new MarvinImage();
var image2 = new MarvinImage();
image1.load("https://i.imgur.com/0maopmf.jpg", image1Loaded);
image2.load("https://i.imgur.com/rWcofCi.jpg", image2Loaded);
function image1Loaded(){
processImage(image1, canvas1);
}
function image2Loaded(){
processImage(image2, canvas2);
}
function processImage(image, canvas){
var bbox = boundingBox(image);
image.drawRect(bbox[0]-10, bbox[1]-10, bbox[2]-bbox[0]+20, bbox[3]-bbox[1]+20, 0xFFFF0000);
image.draw(canvas);
}
function boundingBox(image){
var x1=9999, x2=-1, y1=9999, y2=-1;
var img = image.clone();
Marvin.thresholding(img, img, 127);
for(var y=0; y<img.getHeight(); y++){
for(var x=0; x<img.getWidth(); x++){
// Is Black (Object)?
if(img.getIntColor(x,y) == 0xFF000000){
if(x < x1) x1 = x;
if(x > x2) x2 = x;
if(y < y1) y1 = y;
if(y > y2) y2 = y;
}}}
return [x1, y1, x2, y2];
}
<script src="https://www.marvinj.org/releases/marvinj-0.9.js"></script>
<canvas id="canvas1" width="600" height="300"></canvas>
<canvas id="canvas2" width="600" height="347"></canvas>