我目前正在尝试运行下面的代码,但我一直收到错误消息"类型不匹配:无法从布尔值转换为布尔值"。这对我来说尤其令人困惑,因为: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();
}
}
答案 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(布尔到布尔,反之亦然)。如果您使用较旧的,那就是它无法正常工作的原因。