mirror of
https://github.com/opencv/opencv.git
synced 2026-07-30 07:43:03 +04:00
Merge pull request #12364 from dkurt:dnn_change_blob_from_image
This commit is contained in:
+11
-29
@@ -86,29 +86,13 @@ public class MainActivity extends AppCompatActivity implements CvCameraViewListe
|
||||
// Forward image through network.
|
||||
Mat blob = Dnn.blobFromImage(frame, IN_SCALE_FACTOR,
|
||||
new Size(IN_WIDTH, IN_HEIGHT),
|
||||
new Scalar(MEAN_VAL, MEAN_VAL, MEAN_VAL), false);
|
||||
new Scalar(MEAN_VAL, MEAN_VAL, MEAN_VAL), /*swapRB*/false, /*crop*/false);
|
||||
net.setInput(blob);
|
||||
Mat detections = net.forward();
|
||||
|
||||
int cols = frame.cols();
|
||||
int rows = frame.rows();
|
||||
|
||||
Size cropSize;
|
||||
if ((float)cols / rows > WH_RATIO) {
|
||||
cropSize = new Size(rows * WH_RATIO, rows);
|
||||
} else {
|
||||
cropSize = new Size(cols, cols / WH_RATIO);
|
||||
}
|
||||
|
||||
int y1 = (int)(rows - cropSize.height) / 2;
|
||||
int y2 = (int)(y1 + cropSize.height);
|
||||
int x1 = (int)(cols - cropSize.width) / 2;
|
||||
int x2 = (int)(x1 + cropSize.width);
|
||||
Mat subFrame = frame.submat(y1, y2, x1, x2);
|
||||
|
||||
cols = subFrame.cols();
|
||||
rows = subFrame.rows();
|
||||
|
||||
detections = detections.reshape(1, (int)detections.total() / 7);
|
||||
|
||||
for (int i = 0; i < detections.rows(); ++i) {
|
||||
@@ -116,26 +100,24 @@ public class MainActivity extends AppCompatActivity implements CvCameraViewListe
|
||||
if (confidence > THRESHOLD) {
|
||||
int classId = (int)detections.get(i, 1)[0];
|
||||
|
||||
int xLeftBottom = (int)(detections.get(i, 3)[0] * cols);
|
||||
int yLeftBottom = (int)(detections.get(i, 4)[0] * rows);
|
||||
int xRightTop = (int)(detections.get(i, 5)[0] * cols);
|
||||
int yRightTop = (int)(detections.get(i, 6)[0] * rows);
|
||||
int left = (int)(detections.get(i, 3)[0] * cols);
|
||||
int top = (int)(detections.get(i, 4)[0] * rows);
|
||||
int right = (int)(detections.get(i, 5)[0] * cols);
|
||||
int bottom = (int)(detections.get(i, 6)[0] * rows);
|
||||
|
||||
// Draw rectangle around detected object.
|
||||
Imgproc.rectangle(subFrame, new Point(xLeftBottom, yLeftBottom),
|
||||
new Point(xRightTop, yRightTop),
|
||||
new Scalar(0, 255, 0));
|
||||
Imgproc.rectangle(frame, new Point(left, top), new Point(right, bottom),
|
||||
new Scalar(0, 255, 0));
|
||||
String label = classNames[classId] + ": " + confidence;
|
||||
int[] baseLine = new int[1];
|
||||
Size labelSize = Imgproc.getTextSize(label, Core.FONT_HERSHEY_SIMPLEX, 0.5, 1, baseLine);
|
||||
|
||||
// Draw background for label.
|
||||
Imgproc.rectangle(subFrame, new Point(xLeftBottom, yLeftBottom - labelSize.height),
|
||||
new Point(xLeftBottom + labelSize.width, yLeftBottom + baseLine[0]),
|
||||
new Scalar(255, 255, 255), Core.FILLED);
|
||||
|
||||
Imgproc.rectangle(frame, new Point(left, top - labelSize.height),
|
||||
new Point(left + labelSize.width, top + baseLine[0]),
|
||||
new Scalar(255, 255, 255), Imgproc.FILLED);
|
||||
// Write class name and confidence.
|
||||
Imgproc.putText(subFrame, label, new Point(xLeftBottom, yLeftBottom),
|
||||
Imgproc.putText(frame, label, new Point(left, top),
|
||||
Core.FONT_HERSHEY_SIMPLEX, 0.5, new Scalar(0, 0, 0));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user