java blob

作者:原创时间:2022-03-24
文档

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

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

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

优点:

Blob在目标跟踪的优势有:

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

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

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

4、通过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();
}
}
}

以上就是小编今天的分享了,希望可以帮助到大家。

显示全文
java break wps怎么求和 java bufferedimage java bufferedoutputstream java build.gradle java bundle java bytebuffer java byte取值范围 java calculate 苹果13怎么开机 java calendar获取当前时间 java callback java ceiling 平板如何录屏 java cglib iPad怎么重启 java channel java charat java charsequence java charset java bit 如何清理win10电脑c盘 java binlog win10c盘满了怎么清理 java binder java binary excel表格怎么合并单元格 java bigdecimal java benchmark java beanutils 手机充电发热发烫是什么原因 手机充电时可以玩手机吗 java bean java base64decoder java base64 java barrier java bacnet win10专业版和企业版的区别 java async java assembly