“类型不匹配:无法从布尔值转换为布尔值”

时间:2015-02-24 14:02:46

标签: java opencv

我目前正在尝试运行下面的代码,但我一直收到错误消息"类型不匹配:无法从布尔值转换为布尔值"。这对我来说尤其令人困惑,因为:1)我不确定我在哪里尝试进行这样的转换,以及2)代码在我使用的其他计算机上与Eclipse完美匹配。 / p>

有人能指出问题可能在这里吗?我非常困惑。顺便说一句,错误来自这些方面:

SizeCustom = false;

SizeCustom = true;

if (SizeCustom) {

完整代码:

import java.awt.Dimension;
import java.awt.image.BufferedImage;
import java.awt.image.DataBufferByte;

//import java.io.ByteArrayInputStream;
//import java.io.InputStream;
//import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
//import javax.swing.plaf.ButtonUI;
import javax.swing.WindowConstants;

import org.opencv.core.Mat;
import org.opencv.core.Size;
import org.opencv.imgproc.Imgproc;

public class Imshow {

public JFrame Window;
private ImageIcon image;
private JLabel label;
// private MatOfByte matOfByte;
private Boolean SizeCustom;
private int Height, Width;

public Imshow(String title) {
    Window = new JFrame();
    image = new ImageIcon();
    label = new JLabel();
    // matOfByte = new MatOfByte();
    label.setIcon(image);
    Window.getContentPane().add(label);
    Window.setResizable(false);
    Window.setTitle(title);
    SizeCustom = false;
    setCloseOption(0);
}

public Imshow(String title, int height, int width) {
    SizeCustom = true;
    Height = height;
    Width = width;

    Window = new JFrame();
    image = new ImageIcon();
    label = new JLabel();
    // matOfByte = new MatOfByte();
    label.setIcon(image);
    Window.getContentPane().add(label);
    Window.setResizable(false);
    Window.setTitle(title);
    setCloseOption(0);

}

public void showImage(Mat img) {
    if (SizeCustom) {
        Imgproc.resize(img, img, new Size(Height, Width));
    }
    // Highgui.imencode(".jpg", img, matOfByte);
    // byte[] byteArray = matOfByte.toArray();
    BufferedImage bufImage = null;
    try {
        // InputStream in = new ByteArrayInputStream(byteArray);
        // bufImage = ImageIO.read(in);
        bufImage = toBufferedImage(img);
        image.setImage(bufImage);
        Window.pack();
        label.updateUI();
        Window.setVisible(true);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

2 个答案:

答案 0 :(得分:4)

'布尔'和布尔'实际上是不同的。 '布尔'是一个类,而布尔'是一个原始的。你有一个if语句检查' boolean' SizeCustom的值,但SizeCustom是' Boolean'。你可以做以下两件事之一:

1)将SizeCustom更改为' boolean'类型。

2)使用' booleanValue()'关于'布尔'的方法输入SizeCustom来获取你的布尔值' if语句的值。

答案 1 :(得分:2)

您是否有理由使用private Boolean SizeCustom而不是private boolean SizeCustom?如果没有,最好将其更改为boolean。布尔值和布尔值之间的区别在于布尔值是一个类,布尔值是一个基元。

之前的原因是您可能在其他PC上使用了较新版本的JDK。在JDK 1.5(Java 5)中引入了Autoboxing(布尔到布尔,反之亦然)。如果您使用较旧的,那就是它无法正常工作的原因。