- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个问题很久没解决了。我有一些数据写在 csv 文件中。我想将这些元素写入 String 数组,以便能够在下一节课中使用它们,但数组中的每个元素都等于最后一个元素,我不知道我做错了什么,我需要这方面的帮助。
在这个类中,我从 saved.csv 文件中读取并将其写入字符串数组,接下来我通过将这些元素写回新的 csv 文件来检查此写入 - 检查,但不是在每个文件中获取不同的值我的线和上一条一样。
public class MainActivity extends AppCompatActivity {
Button button;
Button button2;
Button button3;
DescriptorMatcher matcher;
static String name2;
static String color2;
String x2;
String y2;
float xsec;
float ysec;
Mat desc2;
static String descriptor2;
InputStream fis = null;
String line;
String path = Environment.getExternalStorageDirectory().getAbsolutePath()+"/Objects";
File file = new File(path+"/saved.csv");
File file2 = new File(path+"/check.csv");
int numer = 0;
public static String[] dataToSave = null;
public static ObjectRep[] objectTab = new ObjectRep[25];
static {
if (!OpenCVLoader.initDebug()) {
// Handle initialization error
}
}
private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this)
{
@Override
public void onManagerConnected(int status) {
switch (status) {
case LoaderCallbackInterface.SUCCESS: // Callback method, called after OpenCV library initialization
{
FeatureDetector featureDetector = FeatureDetector.create(FeatureDetector.ORB); //or BRISK
MatOfKeyPoint keyPoints = new MatOfKeyPoint();
Mat descriptors= new Mat();
// desc2 = new Mat();
DescriptorExtractor extractor = DescriptorExtractor.create(DescriptorExtractor.ORB); //32Bytes per KeyPoint
DescriptorMatcher matcher = DescriptorMatcher.create(DescriptorMatcher.BRUTEFORCE_HAMMINGLUT);
} break;
default:
{
super.onManagerConnected(status);
} break;
}
}
};
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
readAndWrite();
Log.d("Name of 5 " + objectTab[5].name, "x" + objectTab[5].x);
Log.d("Name of 0 "+objectTab[0].name,"x "+objectTab[0].x);
Log.d("Name of 1 "+objectTab[1].name,"x "+objectTab[1].x);
Log.d("Name of 3 "+objectTab[3].name,"x "+objectTab[3].x);
for(int i=0; i<objectTab.length; i++) {
dataToSave = new String[]{objectTab[i].name, objectTab[i].color, objectTab[i].desc.toString(), String.valueOf(objectTab[i].x), String.valueOf(objectTab[i].y)};
save(file2, dataToSave);
}
button = (Button) findViewById(R.id.button);
button2 = (Button) findViewById(R.id.button2);
button3 = (Button) findViewById(R.id.button3);
button.setFocusable(true);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Intent i = new Intent(getApplicationContext(),AddingObject.class);
MainActivity.this.startActivity(i);
}
});
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(getApplicationContext(),LookObject.class);
MainActivity.this.startActivity(intent);
}
});
button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(1);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
protected void onResume() {
super.onResume();
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_0_0, this, mLoaderCallback);
}
@Override
public void onBackPressed() {
moveTaskToBack(true);
}
// Before 2.0
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
moveTaskToBack(true);
return true;
}
return super.onKeyDown(keyCode, event);
}
public void readAndWrite() {
try {
fis = new FileInputStream(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
try {
if (fis != null) {
// prepare the file for reading
InputStreamReader chapterReader = new InputStreamReader(fis);
BufferedReader buffreader = new BufferedReader(chapterReader);
int j = 1;
// read every line of the file into the line-variable, on line at the time
for (int i = 0; i < 150; i++, j++) {
// do {
line = buffreader.readLine();
if (j == 1) {
name2 = line;
} else if (j == 2) {
color2 = line;
} else if (j == 3) {
descriptor2 = line;
File image = new File(descriptor2);
BitmapFactory.Options bmOptions = new BitmapFactory.Options();
Bitmap bitmap = BitmapFactory.decodeFile(image.getAbsolutePath(), bmOptions);
bitmap = Bitmap.createScaledBitmap(bitmap, bitmap.getWidth(), bitmap.getHeight(), true);
desc2 = new Mat(bitmap.getHeight(), bitmap.getWidth(), CvType.CV_8UC1);
Utils.bitmapToMat(bitmap, desc2);
Imgproc.cvtColor(desc2, desc2, Imgproc.COLOR_RGB2GRAY);
//desc2 = Imgcodecs.imread(descriptor2);
} else if (j == 4) {
x2 = line;
xsec = Float.valueOf(x2);
} else if (j == 5) {
y2 = line;
ysec = Float.valueOf(y2);
j = 0;
objectTab[numer] = null;
objectTab[numer] = new ObjectRep(name2, color2, desc2, xsec, ysec);
Log.d("Przedmiot" + objectTab[numer].name, " ");
if(i==5){
Log.d("Przedmiot i=5" + objectTab[5].name, " ");
}
clear();
if (objectTab[numer] != null) {
Toast.makeText(getApplicationContext(), "Object added ", Toast.LENGTH_SHORT).show();
}
numer++;
}
}
}
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(), "adding failed", Toast.LENGTH_SHORT).show();
} finally {
// close the file.
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void save(File file, String[] data)
{
FileOutputStream fos = null;
try
{
fos = new FileOutputStream(file, true);
}
catch (FileNotFoundException e) {e.printStackTrace();}
try
{
try
{
BufferedReader br = new BufferedReader(new FileReader(file));
if (br.readLine() != null) {
fos.write("\n".getBytes());
}
for (int i = 0; i<data.length; i++)
{
fos.write(data[i].getBytes());
if (i < data.length-1)
{
fos.write("\n".getBytes());
}
}
}
catch (IOException e) {e.printStackTrace();}
}
finally
{
try
{
fos.close();
}
catch (IOException e) {e.printStackTrace();}
}
}
public void clear(){
name2 = null;
color2 = null;
x2 = null;
y2 = null;
xsec = 0;
ysec = 0;
descriptor2 = null;
desc2 = null;
}
编写元素的类:
public class ObjectRep implements Serializable {
private static final long serialVersionUID = 1L;
public static String name;
public static String color;
private byte []descriptors;
private int cols;
private int rows;
private int elemSize;
private int MatType;
public static float x;
public static float y;
Mat desc;
public ObjectRep(String name,String color, Mat desc, float x, float y){
this.name=name;
this.desc = desc;
MatToBytes(desc);
this.color=color;
this.x = x;
this.y = y;
}
public Byte MatToBytes(Mat data){
cols=data.cols();
rows=data.rows();
elemSize=(int)data.elemSize();
MatType=data.type();
descriptors=new byte[(int)(data.total()*data.elemSize())]; // elemSize is in bytes
data.get(rows, cols, descriptors);
return null; //??
}
public Mat bytesToMat(){
if(descriptors!=null){
Mat desc = new Mat(rows, cols, MatType);
desc.put(0, 0, descriptors);
return desc;
}else return null;
}
保存.csv:
table black /storage/emulated/0/Pictures/picFolder/table_black.jpg 700.0 435.0 blabla blabla /storage/emulated/0/Pictures/picFolder/blabla_blabla.jpg 117.0 348.0 somesome somesome /storage/emulated/0/Pictures/picFolder/somesome_somesome.jpg 641.0 298.0 nanana nanana /storage/emulated/0/Pictures/picFolder/nanana_nanana.jpg 129.0 392.0 something something /storage/emulated/0/Pictures/picFolder/something_something.jpg 299.0 504.0 laptop white /storage/emulated/0/Pictures/picFolder/laptop_white.jpg 404.0 572.0
然后我有了新的 check.csv,它看起来像这样:
laptop white /storage/emulated/0/Pictures/picFolder/laptop_white.jpg 404.0 572.0 laptop white /storage/emulated/0/Pictures/picFolder/laptop_white.jpg 404.0 572.0 laptop white /storage/emulated/0/Pictures/picFolder/laptop_white.jpg 404.0 572.0 laptop white /storage/emulated/0/Pictures/picFolder/laptop_white.jpg 404.0 572.0 laptop white /storage/emulated/0/Pictures/picFolder/laptop_white.jpg 404.0 572.0
感谢您的帮助
最佳答案
你的问题在这里
} else if (j == 5) {
...
objectTab[numer] = new ObjectRep(name2, color2, desc2, xsec, ysec);
...
当您读取文件时,您只会在 j = 5 时加载 objectTab。
关于java - 从数组中获取最后一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33805718/
我正在编写一个具有以下签名的 Java 方法。 void Logger(Method method, Object[] args); 如果一个方法(例如 ABC() )调用此方法 Logger,它应该
我是 Java 新手。 我的问题是我的 Java 程序找不到我试图用作的图像文件一个 JButton。 (目前这段代码什么也没做,因为我只是得到了想要的外观第一的)。这是我的主课 代码: packag
好的,今天我在接受采访,我已经编写 Java 代码多年了。采访中说“Java 垃圾收集是一个棘手的问题,我有几个 friend 一直在努力弄清楚。你在这方面做得怎么样?”。她是想骗我吗?还是我的一生都
我的 friend 给了我一个谜语让我解开。它是这样的: There are 100 people. Each one of them, in his turn, does the following
如果我将使用 Java 5 代码的应用程序编译成字节码,生成的 .class 文件是否能够在 Java 1.4 下运行? 如果后者可以工作并且我正在尝试在我的 Java 1.4 应用程序中使用 Jav
有关于why Java doesn't support unsigned types的问题以及一些关于处理无符号类型的问题。我做了一些搜索,似乎 Scala 也不支持无符号数据类型。限制是Java和S
我只是想知道在一个 java 版本中生成的字节码是否可以在其他 java 版本上运行 最佳答案 通常,字节码无需修改即可在 较新 版本的 Java 上运行。它不会在旧版本上运行,除非您使用特殊参数 (
我有一个关于在命令提示符下执行 java 程序的基本问题。 在某些机器上我们需要指定 -cp 。 (类路径)同时执行java程序 (test为java文件名与.class文件存在于同一目录下) jav
我已经阅读 StackOverflow 有一段时间了,现在我才鼓起勇气提出问题。我今年 20 岁,目前在我的家乡(罗马尼亚克卢日-纳波卡)就读 IT 大学。足以介绍:D。 基本上,我有一家提供簿记应用
我有 public JSONObject parseXML(String xml) { JSONObject jsonObject = XML.toJSONObject(xml); r
我已经在 Java 中实现了带有动态类型的简单解释语言。不幸的是我遇到了以下问题。测试时如下代码: def main() { def ks = Map[[1, 2]].keySet()
一直提示输入 1 到 10 的数字 - 结果应将 st、rd、th 和 nd 添加到数字中。编写一个程序,提示用户输入 1 到 10 之间的任意整数,然后以序数形式显示该整数并附加后缀。 public
我有这个 DownloadFile.java 并按预期下载该文件: import java.io.*; import java.net.URL; public class DownloadFile {
我想在 GUI 上添加延迟。我放置了 2 个 for 循环,然后重新绘制了一个标签,但这 2 个 for 循环一个接一个地执行,并且标签被重新绘制到最后一个。 我能做什么? for(int i=0;
我正在对对象 Student 的列表项进行一些测试,但是我更喜欢在 java 类对象中创建硬编码列表,然后从那里提取数据,而不是连接到数据库并在结果集中选择记录。然而,自从我这样做以来已经很长时间了,
我知道对象创建分为三个部分: 声明 实例化 初始化 classA{} classB extends classA{} classA obj = new classB(1,1); 实例化 它必须使用
我有兴趣使用 GPRS 构建车辆跟踪系统。但是,我有一些问题要问以前做过此操作的人: GPRS 是最好的技术吗?人们意识到任何问题吗? 我计划使用 Java/Java EE - 有更好的技术吗? 如果
我可以通过递归方法反转数组,例如:数组={1,2,3,4,5} 数组结果={5,4,3,2,1}但我的结果是相同的数组,我不知道为什么,请帮助我。 public class Recursion { p
有这样的标准方式吗? 包括 Java源代码-测试代码- Ant 或 Maven联合单元持续集成(可能是巡航控制)ClearCase 版本控制工具部署到应用服务器 最后我希望有一个自动构建和集成环境。
我什至不知道这是否可能,我非常怀疑它是否可能,但如果可以,您能告诉我怎么做吗?我只是想知道如何从打印机打印一些文本。 有什么想法吗? 最佳答案 这里有更简单的事情。 import javax.swin
我是一名优秀的程序员,十分优秀!