【发布时间】:2013-08-27 19:22:37
【问题描述】:
我在这里阅读了这篇文章,建议我正在做的事情应该有效:Converting BufferedImage to Mat in opencv
谁能告诉我为什么我的输出与我桌面左上角 10x10 像素的输出有如此大的不同?
编辑:
原始 10x10 图像(基本上是 Eclipse 徽标):http://tinypic.com/r/35l5clt/5
加载到 Mat 后:http://tinypic.com/r/af7w90/5
public static void main(String[] args) throws InterruptedException,
AWTException, IOException {
byte[] bgrPixelData = ScreenToImage.GetCurrentScreenImage();
Mat screenFrame = new Mat(10, 10, CvType.CV_8UC3);
screenFrame.put(0, 0, bgrPixelData);
// Create a blank output image, that we will draw onto.
Mat outputFrame = new Mat(screenFrame.size(), CvType.CV_8UC3);
// Save output and display the openCV Mat image onto the screen.
ImageToScreen.DrawImageToScreen("c:\\temp\\wtf.png", outputFrame);
}
public class ScreenToImage {
public static byte[] GetCurrentScreenImage() throws AWTException,
IOException {
Robot robot = new Robot();
Dimension d = new Dimension();
d.height = 10;
d.width = 10;
BufferedImage screenShot = robot.createScreenCapture(new Rectangle(d));
BufferedImage bgrScreenshot = new BufferedImage(screenShot.getWidth(),
screenShot.getHeight(), BufferedImage.TYPE_3BYTE_BGR);
boolean done = bgrScreenshot.getGraphics().drawImage(screenShot, 0, 0, null);
return ((DataBufferByte) bgrScreenshot.getRaster().getDataBuffer())
.getData();
}
}
static {
System.loadLibrary("opencv_java246");
}
public class ImageToScreen extends JFrame{
private static final long serialVersionUID = 1L;
public static void DrawImageToScreen(String imgStr, Mat m){
Highgui.imwrite(imgStr, m);
JFrame frame = new JFrame("Screen Capture");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(true);
frame.setLocationRelativeTo(null);
ImageIcon image = new ImageIcon(imgStr);
frame.setSize(image.getIconWidth()+10,image.getIconHeight()+35);
// Draw the Image data into the BufferedImage
JLabel label1 = new JLabel(" ", image, JLabel.CENTER);
frame.getContentPane().add(label1);
frame.validate();
frame.setVisible(true);
}
}
【问题讨论】:
-
我得到的大多是黑色的 10x10 正方形。我会找个地方上传。
-
编辑了原始帖子以包含输入和输出图像
标签: java opencv bufferedimage