Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.12.2013, 01:12   #1
Andruxai
 
Регистрация: 10.12.2013
Сообщений: 9
По умолчанию Поиск изображения в изображении???

Всем привет. Подскажите как сделать поиск изображения в изображении. Есть два изображения: большое, и маленькое. На большом надо найти маленькое. Например: чтоб на робочем столе программа знала место расположения папок? Кто нибудь сталкивался с такой проблемой?
Andruxai вне форума Ответить с цитированием
Старый 27.12.2013, 08:05   #2
ultimatet41
Форумчанин
 
Аватар для ultimatet41
 
Регистрация: 08.04.2012
Сообщений: 104
По умолчанию

Вам скорей всего понадобится библиотека opencv для java, плюс почитать статьи про поиск объектов на изображении.

Последний раз редактировалось ultimatet41; 27.12.2013 в 10:42.
ultimatet41 вне форума Ответить с цитированием
Старый 27.12.2013, 15:02   #3
Andruxai
 
Регистрация: 10.12.2013
Сообщений: 9
По умолчанию

От нашол код который мне нада но он очень медленный. Может ктото знает как можна его ускорить?
Код:
Код:
import java.awt.image.BufferedImage;


public class Motor {
	
				  
        int[] findSubimage(BufferedImage im1, BufferedImage im2){
        	   int w1 = im1.getWidth(); int h1 = im1.getHeight();
        	   int w2 = im2.getWidth(); int h2 = im2.getHeight();
        	   assert(w2 <= w1 && h2 <= h1);
        	   // will keep track of best position found
        	   int bestX = 0; int bestY = 0; double lowestDiff = Double.POSITIVE_INFINITY;
        	   // brute-force search through whole image (slow...)
        	   for(int x = 0;x < w1-w2;x++){
        	     for(int y = 0;y < h1-h2;y++){
        	       double comp = compareImages(im1.getSubimage(x,y,w2,h2),im2);
        	       if(comp < lowestDiff){
        	         bestX = x; bestY = y; lowestDiff = comp;
        	       }
        	     }
        	   }
        	   // output similarity measure from 0 to 1, with 0 being identical
        	   System.out.println(lowestDiff);
        	   System.out.println(bestX+" "+bestY);
        	   // return best location
        	   return new int[]{bestX,bestY};
        	   
        	 }

        	 
	
	/**
	 * Determines how different two identically sized regions are.
	 */
	private double compareImages(BufferedImage im1, BufferedImage im2) {
		assert(im1.getHeight() == im2.getHeight() && im1.getWidth() == im2.getWidth());
 	   double variation = 0.0;
 	   for(int x = 0;x < im1.getWidth();x++){
 	     for(int y = 0;y < im1.getHeight();y++){
 	        variation += compareARGB(im1.getRGB(x,y),im2.getRGB(x,y))/Math.sqrt(3);
 	     }
 	   }
 	   return variation/(im1.getWidth()*im1.getHeight());
		
	}
	/**
	 * Calculates the difference between two ARGB colours (BufferedImage.TYPE_INT_ARGB).
	 */
	private double compareARGB(int rgb1, int rgb2) {
		double r1 = ((rgb1 >> 16) & 0xFF)/255.0; double r2 = ((rgb2 >> 16) & 0xFF)/255.0;
 	   double g1 = ((rgb1 >> 8) & 0xFF)/255.0;  double g2 = ((rgb2 >> 8) & 0xFF)/255.0;
 	   double b1 = (rgb1 & 0xFF)/255.0;         double b2 = (rgb2 & 0xFF)/255.0;
 	   double a1 = ((rgb1 >> 24) & 0xFF)/255.0; double a2 = ((rgb2 >> 24) & 0xFF)/255.0;
 	   // if there is transparency, the alpha values will make difference smaller
 	   return a1*a2*Math.sqrt((r1-r2)*(r1-r2) + (g1-g2)*(g1-g2) + (b1-b2)*(b1-b2));
	}

}
Andruxai вне форума Ответить с цитированием
Старый 28.12.2013, 19:12   #4
Marshal_A
Пользователь
 
Регистрация: 28.12.2013
Сообщений: 12
По умолчанию

попробуй через эталоны (если нужно искать одно и тоже изображение)
http://www.work-zilla.com?ref=177050
Marshal_A вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск характерных точек на изображении Puhovoi Общие вопросы Delphi 6 06.03.2013 06:33
Поиск символов на изображении. Mr_freeman Помощь студентам 3 14.12.2012 21:08
Поиск фигуры на изображении Kostia Помощь студентам 2 24.09.2012 14:23
ПОиск объекта на изображении TacoBell Qt и кроссплатформенное программирование С/С++ 7 26.10.2010 13:47
Изображения на изображении :) nikleb JavaScript, Ajax 6 24.11.2007 01:34