w492901074
星光工作室96号店
采纳率50%
2019-01-17 10:48

安卓手机代替扫描枪识别产品条形码,最终生成表格统计信息,现手机传送图片到电脑这步卡住

80

问题:手机如何实时传送摄像头的视频流到电脑端. 列出可行思路就行或解答我的疑问
手机是安卓7.0以上系统 android studio 3.2. 电脑是win7-win10系统 C# VS2015编程.
网络是局域网,IP可以固定下来.
PS:我的想法 手机实时录制视频流,采用间隔0.1秒采集一次图像,压缩成特定格式,再把特定格式压缩包发给电脑,电脑解码成图像,给halcon识别图像,识别出来的信息输入到表格里.
PS2:进度 安卓采集图像 搞定
安卓压缩图像 没搞定 没思路
安卓传输压缩包 没搞定 没思路
电脑接收压缩包 没搞定 完全没想法
电脑解码 没搞定 完全不懂
halcon识别图像(里面有3个条形码) 成字符串 搞定

字符串导入表格 搞定
PS3:疑问1 我传输的是0.1秒一次,就算是高清的图片,是不是不用压缩也不会对公司局域网形成干扰.
疑问2 传送压缩包或图片,并接收这两步完全没想法

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

1条回答

  • zxf_2016 X峰 2年前

    压缩包传送,可以用流来传输(I/O)文件流。
    图片一般也是文件流或者直接base64
    图片压缩:
    /**
    * 压缩图片(质量压缩)
    * @param bitmap
    */
    public static File compressImage(Bitmap bitmap) {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);//质量压缩方法,这里100表示不压缩,把压缩后的数据存放到baos中
    int options = 100;
    while (baos.toByteArray().length / 1024 > 500) { //循环判断如果压缩后图片是否大于1024kb,大于继续压缩
    baos.reset();//重置baos即清空baos
    options -= 10;//每次都减少10
    bitmap.compress(Bitmap.CompressFormat.JPEG, options, baos);//这里压缩options%,把压缩后的数据存放到baos中
    long length = baos.toByteArray().length;
    }
    SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
    Date date = new Date(System.currentTimeMillis());
    String filename = format.format(date);
    File file = new File(Environment.getExternalStorageDirectory(), filename + ".png");
    try {
    FileOutputStream fos = new FileOutputStream(file);
    try {
    fos.write(baos.toByteArray());
    fos.flush();
    fos.close();
    } catch (IOException e) {
    // BAFLogger.e(TAG,e.getMessage());
    e.printStackTrace();
    }
    } catch (FileNotFoundException e) {
    // BAFLogger.e(TAG,e.getMessage());
    e.printStackTrace();
    }
    recycleBitmap(bitmap);
    return file;
    }

    点赞 评论 复制链接分享