1 | initial version |
i'd rather make all temporary Mat's class members, and allocate them only once.
public class MyActivity extends Activity implements CvCameraViewListener2 { CameraBridgeViewBase mOpenCvCameraView; Mat mRgba, mGray, mHsv;
public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
Mat rgba = inputFrame.rgba();
// convert to hsv, get binary img:
Imgproc.cvtColor(rgba , mHsv, Imgproc.COLOR_BGR2HSV);
Core.inRange(mHsv, new Scalar(50, 70, 100), new Scalar(150, 250, 250), mGray);
// save a rgba copy of the binary for drawing later:
Imgproc.cvtColor(mGray , mRgba, Imgproc.COLOR_GRAY2RGBA);
Imgproc.Canny(mGray, mGray, 80, 100, 5, true);
// now, we *need* a new here !
Mat lines = new Mat();
Imgproc.HoughLinesP(mGray, lines, 1, Math.PI/180, 125, 20, 20);
for (int x = 0; x < lines.cols(); x++)
{
double[] vec = lines.get(0, x);
double x1 = vec[0],
y1 = vec[1],
x2 = vec[2],
y2 = vec[3];
Point start = new Point(x1, y1);
Point end = new Point(x2, y2);
Core.line(mRgba, start, end, new Scalar(255,0,0), 2);
}
lines.release(); // !!
return mRgba;
}
public void onCameraViewStarted(int width, int height) {
// allocate the temporary Mat's only once:
mGray = new Mat(height,width,CvType.CV_8U);
mHsv = new Mat(height,width,CvType.CV_8UC3);
mRgba = new Mat(height,width,CvType.CV_8UC4);
}
2 | No.2 Revision |
i'd rather make all temporary Mat's class members, and allocate them only once.
public class MyActivity extends Activity implements CvCameraViewListener2 {
CameraBridgeViewBase mOpenCvCameraView;
Mat mRgba, mGray,