mirror of
https://github.com/PhotonVision/photonvision
synced 2026-07-01 02:41:42 +00:00
Fix misplaced crosshair when rotated +-90 degrees (#646)
This commit is contained in:
@@ -27,6 +27,7 @@ import org.photonvision.common.util.ColorHelper;
|
||||
import org.photonvision.vision.frame.FrameDivisor;
|
||||
import org.photonvision.vision.frame.FrameStaticProperties;
|
||||
import org.photonvision.vision.opencv.DualOffsetValues;
|
||||
import org.photonvision.vision.opencv.ImageRotationMode;
|
||||
import org.photonvision.vision.pipe.MutatingPipe;
|
||||
import org.photonvision.vision.target.RobotOffsetPointMode;
|
||||
import org.photonvision.vision.target.TargetCalculations;
|
||||
@@ -46,6 +47,13 @@ public class Draw2dCrosshairPipe
|
||||
double y = params.frameStaticProperties.centerY;
|
||||
double scale = params.frameStaticProperties.imageWidth / (double) params.divisor.value / 32.0;
|
||||
|
||||
if (this.params.rotMode == ImageRotationMode.DEG_270
|
||||
|| this.params.rotMode == ImageRotationMode.DEG_90) {
|
||||
var tmp = x;
|
||||
x = y;
|
||||
y = tmp;
|
||||
}
|
||||
|
||||
switch (params.robotOffsetPointMode) {
|
||||
case Single:
|
||||
if (params.singleOffsetPoint.x != 0 && params.singleOffsetPoint.y != 0) {
|
||||
@@ -87,15 +95,19 @@ public class Draw2dCrosshairPipe
|
||||
|
||||
public final boolean shouldDraw;
|
||||
public final FrameStaticProperties frameStaticProperties;
|
||||
public final ImageRotationMode rotMode;
|
||||
public final RobotOffsetPointMode robotOffsetPointMode;
|
||||
public final Point singleOffsetPoint;
|
||||
public final DualOffsetValues dualOffsetValues;
|
||||
private final FrameDivisor divisor;
|
||||
|
||||
public Draw2dCrosshairParams(
|
||||
FrameStaticProperties frameStaticProperties, FrameDivisor divisor) {
|
||||
FrameStaticProperties frameStaticProperties,
|
||||
FrameDivisor divisor,
|
||||
ImageRotationMode rotMode) {
|
||||
shouldDraw = true;
|
||||
this.frameStaticProperties = frameStaticProperties;
|
||||
this.rotMode = rotMode;
|
||||
robotOffsetPointMode = RobotOffsetPointMode.None;
|
||||
singleOffsetPoint = new Point();
|
||||
dualOffsetValues = new DualOffsetValues();
|
||||
@@ -108,13 +120,15 @@ public class Draw2dCrosshairPipe
|
||||
Point singleOffsetPoint,
|
||||
DualOffsetValues dualOffsetValues,
|
||||
FrameStaticProperties frameStaticProperties,
|
||||
FrameDivisor divisor) {
|
||||
FrameDivisor divisor,
|
||||
ImageRotationMode rotMode) {
|
||||
this.shouldDraw = shouldDraw;
|
||||
this.frameStaticProperties = frameStaticProperties;
|
||||
this.robotOffsetPointMode = robotOffsetPointMode;
|
||||
this.singleOffsetPoint = singleOffsetPoint;
|
||||
this.dualOffsetValues = dualOffsetValues;
|
||||
this.divisor = divisor;
|
||||
this.rotMode = rotMode;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -182,7 +182,8 @@ public class ColoredShapePipeline
|
||||
settings.offsetSinglePoint,
|
||||
dualOffsetValues,
|
||||
frameStaticProperties,
|
||||
settings.streamingFrameDivisor);
|
||||
settings.streamingFrameDivisor,
|
||||
settings.inputImageRotationMode);
|
||||
draw2dCrosshairPipe.setParams(draw2dCrosshairParams);
|
||||
|
||||
var draw3dTargetsParams =
|
||||
|
||||
@@ -50,7 +50,7 @@ public class DriverModePipeline
|
||||
|
||||
Draw2dCrosshairPipe.Draw2dCrosshairParams draw2dCrosshairParams =
|
||||
new Draw2dCrosshairPipe.Draw2dCrosshairParams(
|
||||
frameStaticProperties, settings.streamingFrameDivisor);
|
||||
frameStaticProperties, settings.streamingFrameDivisor, settings.inputImageRotationMode);
|
||||
draw2dCrosshairPipe.setParams(draw2dCrosshairParams);
|
||||
|
||||
resizeImagePipe.setParams(
|
||||
|
||||
@@ -74,7 +74,8 @@ public class OutputStreamPipeline {
|
||||
settings.offsetSinglePoint,
|
||||
dualOffsetValues,
|
||||
frameStaticProperties,
|
||||
settings.streamingFrameDivisor);
|
||||
settings.streamingFrameDivisor,
|
||||
settings.inputImageRotationMode);
|
||||
draw2dCrosshairPipe.setParams(draw2dCrosshairParams);
|
||||
|
||||
var draw3dTargetsParams =
|
||||
|
||||
Reference in New Issue
Block a user