Convertendo BufferedImage em Mat in opencv

Como posso converter um BufferedImage para um Mat no OpenCV? Estou usando o wrapper java para OpenCV (não JavaCV). Como sou novo no OpenCV, tenho alguns problemas para entender como o Mat funciona.

Eu quero fazer algo assim. (Baseado na resposta de Ted W.):

          BufferedImage image = ImageIO.read(b.getClass().getResource("Lena.png"));

          int rows = image.getWidth();
          int cols = image.getHeight();
          int type = CvType.CV_16UC1;
          Mat newMat = new Mat(rows,cols,type);

          for(int r=0; r<rows; r++){
              for(int c=0; c<cols; c++){
                  newMat.put(r, c, image.getRGB(r, c));
              }
          }

          Highgui.imwrite("Lena_copy.png",newMat);

Isso não funciona. "Lena_copy.png" é apenas uma imagem preta com as dimensões corretas.

questionAnswers(7)

yourAnswerToTheQuestion