Перейти к содержимому
Compvision.ru
Dmti

OpenCV для Processing

Recommended Posts

Здравствуйте.

На работе часто использую Processing, а тут попалась на глаза OpenCV для него, решил попробовать. Пробую примеры, пока не вижу смысла писать на нем - что-то серьёзное. Но возникли вопросы. В частности по команде:

// detect anything ressembling a FRONTALFACE
    Rectangle[] faces = opencv.detect();

Не хочет работать, а никакого описания найти не могу. Может, кто знает, где почитать что-нибудь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну так надо библиотеку наверное установить, в библиотеке есть примеры:

https://github.com/atduskgreg/opencv-processing

 

 

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Так я и говорю что установил и пробую примеры. Устанавливал как сказано сдесь. Инструкция по установки и ссылки для скачки. OpenCV использую давно в связке с Qt

на работе всё видео наблюдение переделал. Processing использую для написания программки контроля приборов на планшете (так балуюсь). Вот и решил попробовать совместить если получится.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Всем здравствуйте.

Просто отзовитесь кто пробовал заставить Processing распознавать лица. Получилось нет?  Второй вечер не чего не получается. И как работает

opencv.detect

это же HaarCascade значит где то должен загружаться классификатор. Вообще все не понятно.
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

https://github.com/atduskgreg/opencv-processing/blob/master/examples/FaceDetection/FaceDetection.pde


 

import gab.opencv.*;
import java.awt.Rectangle;

OpenCV opencv;
Rectangle[] faces;

void setup() {
  opencv = new OpenCV(this, "test.jpg");
  size(opencv.width, opencv.height);

  opencv.loadCascade(OpenCV.CASCADE_FRONTALFACE);  
  faces = opencv.detect();
}

void draw() {
  image(opencv.getInput(), 0, 0);

  noFill();
  stroke(0, 255, 0);
  strokeWeight(3);
  for (int i = 0; i < faces.length; i++) {
    rect(faces[i].x, faces[i].y, faces[i].width, faces[i].height);
  }
}

 

Так вроде загружаются каскады.

 

Да и в исходники заглянуть не грех а там...

Раз...

 

	public final static String VERSION = "##library.prettyVersion##";
	public final static String CASCADE_FRONTALFACE = "haarcascade_frontalface_alt.xml";
	public final static String CASCADE_PEDESTRIANS = "hogcascade_pedestrians.xml";
	public final static String CASCADE_EYE = "haarcascade_eye.xml";
	public final static String CASCADE_CLOCK = "haarcascade_clock.xml";
	public final static String CASCADE_NOSE = "haarcascade_mcs_nose.xml";
	public final static String CASCADE_MOUTH = "haarcascade_mcs_mouth.xml";
	public final static String CASCADE_UPPERBODY = "haarcascade_upperbody.xml";
	public final static String CASCADE_LOWERBODY = "haarcascade_lowerbody.xml";
	public final static String CASCADE_FULLBODY = "haarcascade_fullbody.xml";
	public final static String CASCADE_PEDESTRIAN = "hogcascade_pedestrians.xml";

	public final static String CASCADE_RIGHT_EAR = "haarcascade_mcs_rightear.xml";
	public final static String CASCADE_PROFILEFACE = "haarcascade_profileface.xml";

Два...

/**
	 * Load a cascade file for face or object detection.
	 * Expects one of:
	 * 
	 * <pre>
	 * OpenCV.CASCADE_FRONTALFACE
	 * OpenCV.CASCADE_PEDESTRIANS
	 * OpenCV.CASCADE_EYE			
	 * OpenCV.CASCADE_CLOCK		
	 * OpenCV.CASCADE_NOSE 		
	 * OpenCV.CASCADE_MOUTH		
	 * OpenCV.CASCADE_UPPERBODY 	
	 * OpenCV.CASCADE_LOWERBODY 	
	 * OpenCV.CASCADE_FULLBODY 	
	 * OpenCV.CASCADE_PEDESTRIANS
	 * OpenCV.CASCADE_RIGHT_EAR 	
	 * OpenCV.CASCADE_PROFILEFACE
	 * </pre>
	 * 
	 * To pass your own cascade file, provide an absolute path and a second
	 * argument of true, thusly:
	 * 
	 * <pre>
	 * opencv.loadCascade("/path/to/my/custom/cascade.xml", true)
	 * </pre>
	 * 
	 * (NB: ant build scripts copy the data folder outside of the
	 * jar so that this will work.)
	 * 
	 * @param cascadeFileName
	 * 		The name of the cascade file to be loaded form within OpenCV for Processing.
	 * 		Must be one of the constants provided by this library 
	*/
	public void loadCascade(String cascadeFileName){

		// localize path to cascade file to point at the library's data folder
		String relativePath = "cascade-files/" + cascadeFileName;
		String cascadePath = getLibPath();
		cascadePath += relativePath;
				
		PApplet.println("Load cascade from: " + cascadePath);

		classifier = new CascadeClassifier(cascadePath);   
        
        if(classifier.empty()){
        	PApplet.println("Cascade failed to load"); // raise exception here?
        } else {
        	PApplet.println("Cascade loaded: " + cascadeFileName);
        }
	}

	/**
	 * Load a cascade file for face or object detection.
	 * If absolute is true, cascadeFilePath must be an
	 * absolute path to a cascade xml file. If it is false
	 * then cascadeFilePath must be one of the options provided
	 * by OpenCV for Processing as in the single-argument
	 * version of this function.
	 * 
	 * @param cascadeFilePath
	 * 		A string. Either an absolute path to a cascade XML file or 
	 * 		one of the constants provided by this library.
	 * @param absolute
	 * 		Whether or not the cascadeFilePath is an absolute path to an XML file.		
	 */
	public void loadCascade(String cascadeFilePath, boolean absolute){
		if(absolute){
			classifier = new CascadeClassifier(cascadeFilePath);   
	        
	        if(classifier.empty()){
	        	PApplet.println("Cascade failed to load"); // raise exception here?
	        } else {
	        	PApplet.println("Cascade loaded from absolute path: " + cascadeFilePath);
	        }
		} else {
			loadCascade(cascadeFilePath);
		}
	}

 

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Здравствуйте.

Задали задачку :-))

Мы с вами разные библиотеки используем,  у меня эта. Пока разобрался, пока нашел. Оказалась прямо в Processing  ваша версия сидит, а я пол интернета облазил. Загрузил, разобрался, но распознавание также не работает.

Так и не могу в Processing  получить рамочку вокруг "морды лица".

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Все разобрался ваш пункт "Два"  не внимательно прочитал. Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×