chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,148 @@
|
||||
package org.opencv.test.videoio;
|
||||
|
||||
import java.util.List;
|
||||
import java.io.File;
|
||||
import java.io.RandomAccessFile;
|
||||
import java.io.IOException;
|
||||
import java.io.FileNotFoundException;
|
||||
|
||||
import org.opencv.core.Mat;
|
||||
import org.opencv.core.Size;
|
||||
import org.opencv.core.MatOfInt;
|
||||
import org.opencv.videoio.Videoio;
|
||||
import org.opencv.videoio.VideoCapture;
|
||||
import org.opencv.videoio.IStreamReader;
|
||||
|
||||
import org.opencv.test.OpenCVTestCase;
|
||||
|
||||
public class VideoCaptureTest extends OpenCVTestCase {
|
||||
private final static String ENV_OPENCV_TEST_DATA_PATH = "OPENCV_TEST_DATA_PATH";
|
||||
|
||||
private VideoCapture capture;
|
||||
private boolean isOpened;
|
||||
private boolean isSucceed;
|
||||
private File testDataPath;
|
||||
|
||||
@Override
|
||||
protected void setUp() throws Exception {
|
||||
super.setUp();
|
||||
|
||||
capture = null;
|
||||
isSucceed = false;
|
||||
isOpened = false;
|
||||
|
||||
String envTestDataPath = System.getenv(ENV_OPENCV_TEST_DATA_PATH);
|
||||
|
||||
if(envTestDataPath == null) throw new Exception(ENV_OPENCV_TEST_DATA_PATH + " has to be defined!");
|
||||
|
||||
testDataPath = new File(envTestDataPath);
|
||||
}
|
||||
|
||||
public void testGrab() {
|
||||
capture = new VideoCapture();
|
||||
isSucceed = capture.grab();
|
||||
assertFalse(isSucceed);
|
||||
}
|
||||
|
||||
public void testIsOpened() {
|
||||
capture = new VideoCapture();
|
||||
assertFalse(capture.isOpened());
|
||||
}
|
||||
|
||||
public void testDefaultConstructor() {
|
||||
capture = new VideoCapture();
|
||||
assertNotNull(capture);
|
||||
assertFalse(capture.isOpened());
|
||||
}
|
||||
|
||||
public void testConstructorWithFilename() {
|
||||
capture = new VideoCapture("some_file.avi");
|
||||
assertNotNull(capture);
|
||||
}
|
||||
|
||||
public void testConstructorWithFilenameAndExplicitlySpecifiedAPI() {
|
||||
capture = new VideoCapture("some_file.avi", Videoio.CAP_ANY);
|
||||
assertNotNull(capture);
|
||||
}
|
||||
|
||||
public void testConstructorWithIndex() {
|
||||
capture = new VideoCapture(0);
|
||||
assertNotNull(capture);
|
||||
}
|
||||
|
||||
public void testConstructorWithIndexAndExplicitlySpecifiedAPI() {
|
||||
capture = new VideoCapture(0, Videoio.CAP_ANY);
|
||||
assertNotNull(capture);
|
||||
}
|
||||
|
||||
public void testConstructorStream() throws FileNotFoundException {
|
||||
// Check backend is available
|
||||
Integer apiPref = Videoio.CAP_ANY;
|
||||
for (Integer backend : Videoio.getStreamBufferedBackends())
|
||||
{
|
||||
if (!Videoio.hasBackend(backend))
|
||||
continue;
|
||||
if (!Videoio.isBackendBuiltIn(backend))
|
||||
{
|
||||
int[] abi = new int[1], api = new int[1];
|
||||
Videoio.getStreamBufferedBackendPluginVersion(backend, abi, api);
|
||||
if (abi[0] < 1 || (abi[0] == 1 && api[0] < 2))
|
||||
continue;
|
||||
}
|
||||
apiPref = backend;
|
||||
break;
|
||||
}
|
||||
if (apiPref == Videoio.CAP_ANY)
|
||||
{
|
||||
throw new TestSkipException();
|
||||
}
|
||||
|
||||
RandomAccessFile f = new RandomAccessFile(new File(testDataPath, "cv/video/768x576.avi"), "r");
|
||||
|
||||
IStreamReader stream = new IStreamReader()
|
||||
{
|
||||
@Override
|
||||
public long read(byte[] buffer, long size)
|
||||
{
|
||||
assertEquals(buffer.length, size);
|
||||
try
|
||||
{
|
||||
return Math.max(f.read(buffer), 0);
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
System.out.println(e.getMessage());
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public long seek(long offset, int origin)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (origin == 0)
|
||||
f.seek(offset);
|
||||
else if (origin == 1)
|
||||
f.seek(f.getFilePointer() + offset);
|
||||
else if (origin == 2)
|
||||
f.seek(f.length() + offset);
|
||||
return f.getFilePointer();
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
System.out.println(e.getMessage());
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
};
|
||||
capture = new VideoCapture(stream, apiPref, new MatOfInt());
|
||||
assertNotNull(capture);
|
||||
assertTrue(capture.isOpened());
|
||||
|
||||
Mat frame = new Mat();
|
||||
assertTrue(capture.read(frame));
|
||||
assertEquals(frame.rows(), 576);
|
||||
assertEquals(frame.cols(), 768);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user