Ball finding vision system

Proiect
7/10 (1 vot)
Domeniu: Calculatoare
Conține 1 fișier: pdf
Pagini : 8 în total
Cuvinte : 871
Mărime: 102.23KB (arhivat)
Publicat de: Catalin V.
Puncte necesare: 6

Cuprins

  1. Obiectivele proiectului .. 3
  2. Tipuri de teste . 3
  3. Unit Testing ... 4
  4. Integration Testing . 5
  5. System Testing 7
  6. Concluzii .. 8

Extras din proiect

Obiectivele proiectului

Proiectul este conceput pentru a ajuta dezvoltatorii de aplicații pentru robotul roboRIO. Aplicația simulează datele procesate de robot astfel se pot dezvolta și testa aplicații de procesare a imaginilor WPILib fără a fi nevoie de un robot.

Pentru a demonstra functionalitatea librăriei am creat un proiect de test care detectează bilele roșii și albastre dintr-o imagine.

.

Tipuri de teste:

Pentru acest proiect am ales să fac următoarele tipuri de teste:

-Unit testing

-Integration testing

-System testing

Clasa testata:

public class ImageProcessor {

private IBallPipeline pipeline;

private INetworkTableWriter networkTableWriter;

private ExecutorService executor = Executors.newSingleThreadExecutor();

private Mat outputImage = new Mat();

private Future<?> processAsyncFuture;

/**

- ImageProcessor requires a pipeline to process and a network table writer to write

- results to.

- @param pipeline The pipeline to process

- @param networkTableWriter A network table writer to send results to

- /

public ImageProcessor(IBallPipeline pipeline, INetworkTableWriter networkTableWriter) {

if (pipeline == null) {

throw new IllegalArgumentException();

}

this.pipeline = pipeline;

this.networkTableWriter = networkTableWriter;

this.processAsyncFuture = null;

}

/**

- Process an image asynchronously. Call awaitProcessCompletion to wait for completion.

- You can only process one image at a time.

4

- @param inputImage The image to process

- /

public void processAsync(Mat inputImage)

{

if (processAsyncFuture != null) {

throw new IllegalAccessError("Only one process can be awaited at a time.");

}

// Hold on the the future...use the awaiter to wait for completion

processAsyncFuture = executor.submit(() -> {

// Apply the pipeline to the image.

pipeline.process(inputImage);

// Update network table

networkTableWriter.write();

return null;

});

}

- metoda pe care am testat-o este functia processAsync care face 2 lucruri: apeleaza pipelineul de lucru si scrie in tabela de network.

Unit Testing:

- am folosit frameworkul Mockito pentru a mockui interfetele de pipeline si networktabelwriter

- cu acest tip de test doresc sa verific ca se apeleaza metodele de process si write din functia processAsync

import org.junit.*;

import org.opencv.core.*;

import static org.mockito.Mockito.*;

public class ImageProcessorUnitTest

{

// This must be done in order to call opencv classes

static {

System.loadLibrary("opencv_java310");

}

@Test

public void itShouldProcessMyPipeline() {

IBallPipeline pipelineMock = mock(IBallPipeline.class);

INetworkTableWriter networkTableWriterMock = mock(INetworkTableWriter.class);

ImageProcessor imageProcessor = new ImageProcessor(pipelineMock, networkTableWriterMock);

5

Mat emptyImage = new Mat();

// Act

imageProcessor.processAsync(emptyImage);

imageProcessor.awaitProcessCompletion();

//Assert

verify(pipelineMock, times(1)).process(emptyImage);

}

Preview document

Ball finding vision system - Pagina 1
Ball finding vision system - Pagina 2
Ball finding vision system - Pagina 3
Ball finding vision system - Pagina 4
Ball finding vision system - Pagina 5
Ball finding vision system - Pagina 6
Ball finding vision system - Pagina 7
Ball finding vision system - Pagina 8

Conținut arhivă zip

  • Ball finding vision system.pdf

Ai nevoie de altceva?