Guest User

Untitled

a guest
Jan 17th, 2018
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.57 KB | None | 0 0
  1. import static org.bytedeco.javacpp.opencv_imgproc.CV_BGR2GRAY;
  2. import static org.bytedeco.javacpp.opencv_imgproc.cvtColor;
  3. import static org.bytedeco.javacpp.opencv_objdetect.CASCADE_SCALE_IMAGE;
  4.  
  5. import org.bytedeco.javacpp.opencv_core;
  6. import org.bytedeco.javacpp.opencv_core.Mat;
  7. import org.bytedeco.javacpp.opencv_objdetect;
  8.  
  9. import ij.ImagePlus;
  10. import ij.gui.Roi;
  11. import ij.plugin.filter.PlugInFilter;
  12. import ij.plugin.frame.RoiManager;
  13. import ij.process.ImageProcessor;
  14. import ijopencv.ij.ImagePlusMatConverter;
  15. import ijopencv.opencv.RectRoiConverter;
  16.  
  17. /**
  18. *
  19. * @author jonathan
  20. */
  21. public class FaceDetectionJ implements PlugInFilter
  22. {
  23.  
  24. ImagePlus imp;
  25.  
  26. @Override
  27. public int setup(String arg, ImagePlus imp)
  28. {
  29. this.imp = imp;
  30. return DOES_RGB;
  31. }
  32.  
  33. @Override
  34. public void run(ImageProcessor ip)
  35. {
  36. // Converter
  37. ImagePlusMatConverter ic = new ImagePlusMatConverter();
  38. opencv_core.Mat img2 = ic.convert(imp, opencv_core.Mat.class);
  39.  
  40. // Detect the faces and store them as an array of rectangles
  41. detectFaces(img2);
  42.  
  43. }
  44.  
  45. public opencv_core.RectVector detectFaces(opencv_core.Mat image)
  46. {
  47. RectRoiConverter rc = new RectRoiConverter();
  48.  
  49. opencv_core.Mat img_gray = new opencv_core.Mat();
  50. cvtColor(image, img_gray, CV_BGR2GRAY);
  51.  
  52. opencv_objdetect.CascadeClassifier faceclassifier = new opencv_objdetect.CascadeClassifier(
  53. "haarcascade_frontalface_alt.xml");
  54. // and eyes
  55. opencv_objdetect.CascadeClassifier eyeclassifier = new opencv_objdetect.CascadeClassifier(
  56. "haarcascade_eye.xml");
  57.  
  58. opencv_core.RectVector rv = new opencv_core.RectVector();
  59.  
  60. faceclassifier.detectMultiScale(img_gray, rv, 1.1, 2, CASCADE_SCALE_IMAGE, new opencv_core.Size(30, 30),
  61. new opencv_core.Size(500, 500));
  62.  
  63. faceclassifier.close();
  64.  
  65.  
  66. // Add rectangles to ROI Manager
  67. RoiManager rm = new RoiManager();
  68. rm.setVisible(true);
  69. for (int i = 0; i < rv.size(); i++)
  70. {
  71. Roi r = rc.convert(rv.get(i), Roi.class);
  72. rm.add(imp, r, 0);
  73.  
  74. // How do I search for eyes withing the ROI?
  75. // Something like this?
  76. //eyeclassifier.detectMultiScale(ROI in img_gray?);
  77. //for (int j = 0; j < ROI?; j++)
  78. //{
  79. // And here? Like above? Roi e = ??
  80. //}
  81. }
  82.  
  83. return rv; // and the function does actually not need to return anything anymore, right?
  84. }
  85. }
Add Comment
Please, Sign In to add comment