【问题标题】:How to fix the imports for java example如何修复 java 示例的导入
【发布时间】:2015-08-26 07:59:45
【问题描述】:

我想尝试使用 OpenCV 在 Java 中实现 FloodFill。 我找到了一个例子。太糟糕了,它无法识别导入库。
基本上有两个问题。
1。我不知道那些是什么:

import controlP5.ControlP5;

import controlP5.Slider;

import processing.core.PApplet;


是不是作者自己写的东西用了却不分享?如果不是怎么安装?


2.我成功安装了 OpenCV。但是看起来是这样的

import org.opencv.core.*; 

不等于例子,有什么区别吗?

你可以看下面的源代码

import java.awt.Point;

import controlP5.ControlP5;
import controlP5.Slider;

import processing.core.PApplet;
import sj.opencv.Capture;
import sj.opencv.CxCore;
import sj.opencv.CxCore.CompareMode;
import sj.opencv.HighGui;
import sj.opencv.ImgProc;
import sj.opencv.IplImage;
import sj.opencv.PUtils;
import sj.opencv.Scalar;
import sj.opencv.Constants.ColorModel;
import sj.opencv.Constants.PixelDepth;

/**
 * @author siggi
 * @date Jul 29, 2010
 */
 public class FloodFill extends PApplet{

    int w = 320;
    int h = 240;

    IplImage im;
    IplImage im_res;
    Capture capture;

    int click_x = w/2;
    int click_y = h/2;

    // Slider values
    Slider low_slider;
    Slider high_slider;

    @Override
    public void setup(){
            size(2*w + 2, h+150);

            // Camera initiated to capture from device
            capture = HighGui.captureFromCAM(0);

            im = CxCore.createImage(w, h, PixelDepth.IPL_DEPTH_8U, ColorModel.BGR);
            im_res = CxCore.createImage(w+2, h+2, PixelDepth.IPL_DEPTH_8U, ColorModel.GRAY);

            // Init GUI
            ControlP5 controlP5 = new ControlP5(this);
            low_slider = controlP5.addSlider("low_val",     0,      10,     5,      20,             h+20,   10,     100);
            high_slider = controlP5.addSlider("high_val",   0,      10,     5,      80,             h+20,   10,     100);
    }

    @Override
    public void draw(){
            // When a frame becomes available
            if( HighGui.queryFrame(capture, im) ){
                    background(70);

                    // Draw it
                    image(PUtils.getPImage(im), 0, 0);

                    // Start by clearing the mask (it needs to be cleared for repeatable behavior)
                    CxCore.set(im_res, new Scalar(0), null);

                    // Perform the floodfilling
                    ImgProc.floodFill(im, new Point( click_x, click_y ), new Scalar(low_slider.value()), new Scalar(high_slider.value()), im_res);

                    // This simply changes the mask from being a 0-1 value to 0-255 value for viewing
                    CxCore.cmpS(im_res, 0, im_res, CompareMode.CV_CMP_NOT_EQUAL);

                    image(PUtils.getPImage(im_res), w, 0);
            }
    }

    @Override
    public void mouseClicked(){
            click_x = mouseX;
            click_y = mouseY;

            if( click_x<0 ) click_x = 0;
            if( click_x>=w ) click_x = w-1;
            if( click_y<0 ) click_x = 0;
            if( click_y>=h ) click_x = h-1;
    }

}

任何形式的帮助都会很棒。提前致谢=)

【问题讨论】:

    标签: java opencv import


    【解决方案1】:

    sj.opencv 是openCV 和处理的封装,它与org.opencv 不同,org.opencv 或多或少是openCV 的原生方法。

    【讨论】:

    • 那么在这种情况下,我需要另外安装sj.opencv吗?
    • 这是选项之一,但不维护 sj.opencv 所以我宁愿建议使用 org.opencv。
    • sj.opencv 是否为本示例提供了一些特殊的东西,而 org.opencv 中没有。或者在这种情况下它们是否相等,因为这里的功能重叠。
    猜你喜欢
    • 2018-12-05
    • 1970-01-01
    • 1970-01-01
    • 2022-11-28
    • 2021-06-05
    • 1970-01-01
    • 2021-03-03
    • 1970-01-01
    • 2019-04-14
    相关资源
    最近更新 更多