用于模板匹配的OpenCV阅读图像

时间:2014-10-23 09:54:48

标签: java mysql image opencv image-processing

我在java中使用OpenCV,使用eclipse进行开发,并以这种方式读取图像以进行模板匹配。

String inFile = "C:/image.png";
Mat img = Highgui.imread(inFile);

这很不错,但我的图片不在我的本地电脑中。我应该在mysql数据库中的服务器上比较2000个图像。将2000张图像保存到我的电脑然后阅读它们没有意义。

所以我需要的是Highgui.imread(inFile)读取一个图像:Highgui.imread(Image inImage)或者Highgui.imread(File inFile),我找不到要编辑/修改的java源代码。我需要将某些来自mysql DataBase的图像转换为Mat类型进行比较(模板匹配)......

更多信息:我有一个包含列的mysql表:ID,Name,Description,Image1,Image2。 Image1和2列的类型是" mediumblob"当你右键单击" MySQL Workbench"中的Image1或Image2列时我选择"在编辑器中打开价值"然后有3个标签;二进制,文本,图像,在图像我的图像显示完美。 png的类型是png。最后我想比较Image1和Image2。 Image2是inFile,Image1是templateFile。

对不起,我觉得我的问题很明确。我会尝试改写它。 我有一台本地电脑和一台服务器。图像存储在服务器上的mysql数据库中。我想从我的本地计算机运行一个应用程序来检索/访问服务器上的2个图像,然后通过OpenCV模板匹配对它们进行比较。你不能通过/server/home/user/mysql/image_table/mypicture.png访问一列mysql,我写这篇是因为" guneykayim"的建议。所以我计划如何检索图像,还没有尝试,但计划是:

Blob imageBlob = resultSet.getBlob(yourBlobColumnIndex);
InputStream binaryStream = imageBlob.getBinaryStream(0, imageBlob.length());

或者

InputStream binaryStream = resultSet.getBinaryStream(yourBlobColumnIndex);

或者

try{
    Class.forName(driverName);
    con = DriverManager.getConnection(url+dbName,userName,password);
    Statement stmt = con.createStatement();
    ResultSet rs = stmt.executeQuery("select image from image");
    int i = 0;
    while (rs.next()) {
        InputStream in = rs.getBinaryStream(1);
        OutputStream f = new FileOutputStream(new File("test"+i+".jpg"));
        i++;
        int c = 0;
        while ((c = in.read()) > -1) {
            f.write(c);
        }
        f.close();
        in.close();
    }
}catch(Exception ex){
    System.out.println(ex.getMessage());
}

我的问题:我想比较2张图片,我是从mysql数据库中检索的。

Highgui.imread(); 

此方法需要 String ,但我想提供 InputStream 或OutputStream文件...就像我说我不想保存2000张图片在我的本地计算机上。我也可以选择其他方式。

最简单的改写:如何在存储在mysql数据库中的2个图像上使用java OpenCV的模板匹配。

换句话说,如何将InputStream对象转换为Mat对象?

感谢阅读。

1 个答案:

答案 0 :(得分:1)

我找到答案here对这个家伙的称赞,他是我的英雄:)完美的工作,如果你想要原始颜色的图像而不是灰度,你应该用Highgui.IMREAD_UNCHANGED改变Highgui.IMREAD_GRAYSCALE更多信息check