java - blob

来源:趣味经验馆 2.88W

<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>

java blob是什么,让我们一起了解一下?

Blob是计算机视觉图像中的一块连通区域,Blob分析的就是对前景或背景分离后的二值图像,进行连通域提取和标记以及计算Blob的一些相关特征,而且通过Blob提取,还可以获得相关区域的信息。

Blob分析的重要一个步骤是连通区域的确定,那么它的优缺点是什么?

优点:

Blob在目标跟踪的优势有:

1、通过Blob提取,可以获得相关区域的信息,这些信息可以作为边缘监测器或者角点检测器的补充信息。在目标识别中,Blob可以提供局部的统计信息和外貌信息,这些信息能够为目标识别和跟踪提供依据。

2、可以利用Blob对直方图进行峰值检测。

3、Blob还可以作为纹理分析和纹理识别的基元。

4、通过Blob分析,可以得到目标的个数及其所在区域,在进行目标匹配时,不需要对全局图像进行搜索。

java blob

缺点:

1、速度过慢,要整个区域作逐点扫描。

2、Blob分析难度大。这是一纯几何学上的问题,一个不规则的形状,如何计算它的面积、大小没有简单易行的算法,太过复杂,运算时间就长,速度就更慢了。

3、实际应用。Blob算法在实际应用中,非常依赖光源。几乎可以说,Blob算法如果离开了一个可靠的光源设计,则完全不起作用。

那么java是怎样对Blob读写的?示例如下:

package com.you.sister; import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.DataOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.sql.Blob;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.util.Properties; public class BlobTest { public static Connection conn;public static Connection getConn() throws Exception {FileInputStream fis = new FileInputStream(new File("jdbc.properties"));Properties prop = new Properties();prop.load(fis);String driver = prop.getProperty("jdbc.driver");String url = prop.getProperty("jdbc.url");String username = prop.getProperty("jdbc.username");String password = prop.getProperty("jdbc.password");Class.forName(driver);return  DriverManager.getConnection(url, username, password);}public static void main(String[] args) throws Exception {conn = getConn();readBlob();writeBlob();conn.close();}/*** 从数据库中读大对象出来* 保存在本地*/public static void readBlob() {try {String readSql = "select * from emp where empno = ?";PreparedStatement ps = conn.prepareStatement(readSql);ps.setInt(1, 7369);ResultSet rs = ps.executeQuery();while (rs.next()) {Blob image = rs.getBlob("image");DataOutputStream dos = // 在FileOutputStream中指定文件输出路径new DataOutputStream(new FileOutputStream(7369 + "_image.jpeg"));InputStream fis = image.getBinaryStream();int out;byte[] outByte = new byte [100];// 将blob对象输入流写入本地输出流中while ((out = fis.read(outByte)) != -1) {dos.write(outByte);}fis.close();dos.flush();dos.close();}rs.close();ps.close();} catch (Exception e) {e.printStackTrace();}}/*** 将大对象文件保存进数据库中*/public static void writeBlob() {try {BufferedInputStream fis = new BufferedInputStream(new FileInputStream(new File("D:Tulips.jpg")));// 如果是新插入字段,则将大对象对应字段插入为empty_clob();// 如果是修改,则可以先update 该行数据,将大对象对应字段设置为empty_clob();String writeSql = "select * from emp where empno = ? for update";PreparedStatement ps = conn.prepareStatement(writeSql);ps.setInt(1, 7499);conn.setAutoCommit(false);ResultSet rs = ps.executeQuery();while (rs.next()) {oracle.sql.BLOB image = (oracle.sql.BLOB)rs.getBlob("image");BufferedOutputStream bos = new BufferedOutputStream(image.getBinaryOutputStream());int c;// 将实际文件中的内容以二进制的形式来输出到blob对象对应的输出流中while ((c = fis.read()) != -1) {bos.write(c);}fis.close();bos.close();}conn.commit();rs.close();ps.close();} catch (Exception e) {e.printStackTrace();}}}

热门标签