you are using your capture() method in a static way. static and abstract are totally unrelated concepts.
If you really wanted to deal with abstraction in this case, I would have something like this in the abstract class.
public Mat capture() {
camera.open(1);
camera.read(image);
camera.release();
implemenntCapature();
return image;
}
public abstract implemenntCapture();
If you have WeddingPhotographer or WarPhotographer, then they can add their own behaviour to their implementCapture().
eg :
public void implementCapture() {
addSoftfocus();
}
public void implementCapture() {
duckBullets();
}