Здравствуйте, форумчане!
У меня возникла идея - объединить два проекта из примеров книги "OpenCV 3.0 Computer Vision with Java". А именно - захват вебкамеры и заливка (flood fill) кадра видео. Возникает конфликт между двумя GUI
1) GUI заливки с фотографией
package org.javaopencvbook;
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
public class App
{
static{ System.loadLibrary(Core.NATIVE_LIBRARY_NAME); }
public static void main(String[] args) throws Exception {
String filePath = "src/main/resources/images/cathedral-small.jpg";
Mat newImage = Imgcodecs.imread(filePath);
if(newImage.dataAddr()==0){
System.out.println("Couldn't open file " + filePath);
}else{
GUI gui = new GUI("Floodfill Example", newImage);
gui.init();
}
return;
}
}
2) GUI захвата работает с веб-камерой.
package org.javaopencvbook;
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import org.javaopencvbook.utils.ImageProcessor;
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.videoio.VideoCapture;
import org.opencv.videoio.Videoio;
public class App
{
static{ System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
}
private JFrame frame;
private JLabel imageLabel;
public static void main(String[] args) {
App app = new App();
app.initGUI();
app.runMainLoop(args);
}
private void initGUI() {
frame = new JFrame("Camera Input Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400,400);
imageLabel = new JLabel();
frame.add(imageLabel);
frame.setVisible(true);
}
private void runMainLoop(String[] args) {
ImageProcessor imageProcessor = new ImageProcessor();
Mat webcamMatImage = new Mat();
Image tempImage;
VideoCapture capture = new VideoCapture(0);
capture.set(Videoio.CAP_PROP_FRAME_WIDTH,320);
capture.set(Videoio.CAP_PROP_FRAME_HEIGHT,240);
if( capture.isOpened()){
while (true){
capture.read(webcamMatImage);
if( !webcamMatImage.empty() ){
tempImage= imageProcessor.toBufferedImage(webcamMatImage);
ImageIcon imageIcon = new ImageIcon(tempImage, "Captured video");
imageLabel.setIcon(imageIcon);
frame.pack(); //this will resize the window to fit the image
}
else{
System.out.println(" -- Frame not captured -- Break!");
break;
}
}
}
else{
System.out.println("Couldn't open capture.");
}
}
}
При создании вылезает много окон. Моя попытка не обвенчалась успехом
public class OpenCVNetBeans {
static{ System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
}
private JFrame frame;
private JLabel imageLabel;
public static void main(String[] args) {
OpenCVNetBeans app = new OpenCVNetBeans();
app.initGUI();
app.runMainLoop(args);
}
private void initGUI() {
frame = new JFrame("Camera Input Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400,400);
imageLabel = new JLabel();
frame.add(imageLabel);
frame.setVisible(true);
}
private void runMainLoop(String[] args) {
ImageProcessor imageProcessor = new ImageProcessor();
Mat webcamMatImage = new Mat();
Image tempImage;
VideoCapture capture = new VideoCapture(0);
capture.set(Videoio.CAP_PROP_FRAME_WIDTH,320);
capture.set(Videoio.CAP_PROP_FRAME_HEIGHT,240);
if( capture.isOpened()){
while (true){
capture.read(webcamMatImage);
if( !webcamMatImage.empty() ){
tempImage= imageProcessor.toBufferedImage(webcamMatImage);
GUI gui = new GUI("Floodfill Example", webcamMatImage);
gui.init();
}
else{
System.out.println(" -- Frame not captured -- Break!");
break;
}
}
}
else{
System.out.println("Couldn't open capture.");
}
}
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Можно ли как-либо сделать так, чтобы метод Split делил строку, когда встречает точку, но игнорировал, например "Mr"? Пример: Строка: "Mr