【问题标题】:How to create a mat from bits in opencv for java?如何从opencv for java中的位创建一个垫子?
【发布时间】:2016-02-29 17:29:35
【问题描述】:

有人可以解释如何使用位串中的值创建二进制 mat 吗?

例如, 我想从位串1111000001010101创建我的垫子,所以我有一个2行1列的垫子对象。

为此,我使用Mat mat = new Mat(2,1,CvType.CV_8UC1); 初始化垫对象

我可以将这些字符串转换为字节数组并使用mat.put(0,0,bytearray) 还是我必须考虑其他什么?

稍后我想使用这种方法创建我自己的binary descriptor,它可以与ÒRB 提取的其他描述符进行比较。 与norm(descA,descB,NORM_HAMMING)

谢谢你和最好的问候

【问题讨论】:

    标签: java opencv feature-descriptor


    【解决方案1】:

    您可以使用Byte.parseByte()radix 为2,例如byte b = Byte.parseByte(str, 2);,首先将其转换为byte,然后创建一个字节数组,然后将其转换为Mat 对象,如下所示:

    Mat mat = Imgcodecs.imdecode(new MatOfByte(byteArray), Imgcodecs.CV_LOAD_IMAGE_UNCHANGED);
    

    【讨论】:

    • 为什么能告诉我原因,我开发了使用这行代码的应用程序,目前正在服务器上运行,我只是从我的项目中复制并粘贴那行代码,所以这意味着完美无缺!
    • 想想解码的意义。这里没有要解码的数据。也许您在代码中使用它来解码图像数据,例如 jpeg
    • 你好,所以我认为new MatOfByte(byteArray) 命令就足够了。但是在这种情况下,MatByte() 和一个简单的 Mat() 对象有什么不同呢?
    • 不,还不够,必须解码,MatOfByte是扩展Mat类的OpenCV数据类型,所以它比Mat有一些功能。而且解码功能也需要这种数据类型。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-25
    • 1970-01-01
    相关资源
    最近更新 更多