(原)java中opencv的width的问题

调试程序,我这边负责在JNI中将缓冲区中的数据转换成bitmp。测试时用320*240的图像测试正常,但是别人使用的图像宽度为270时,图像出现了错位(没截图,不好理解)。

首先想到的是opencv的图像宽度的问题(其实确实也是这个问题,只是我调试错了地方)。

开始将bitmap的图像的宽度改成能被4整除,结果图像不正确,而且偶尔会出现崩溃…

之后将bitmap和输入的缓冲区的宽度都改成能被4整除,结果图像出现一条斜的没有数据的条纹。

再然后我用raw的数据测试,发现代码正常。最后突然想到,其实输入的缓冲区是opencv的数据,数据的宽度强制转换成能被4整除了。因而把bitmap的宽度改成需要的输入(例如270),将缓冲区的宽度重新计算,转换成4的整数倍。图像正常,程序也没有崩溃…

int widthCV=(int((width-1)/4.0+1)*4);

开始把opencv的和bitmap的宽度弄混了,以至于调试了一会。还有就是最初没想到别人给我的是opencv生成的数据,导致宽度不一定是原始的数据宽度。

以后尽量注意…

时间: 2024-10-07 00:25:43

(原)java中opencv的width的问题的相关文章

java中使用opencv

Java + opencv学习:在Eclipse下配置基于Java的OpenCV开发环境 2016-04-08 17:43 6491人阅读 评论(0) 收藏 举报  分类: OpenCV学习(10)  版权声明:本文为博主原创文章,未经博主允许不得转载. 最近研究OpenCV想用java进行开发,因此研究了一下怎么在Eclipse中配置基于java的Opencv. 第一步:先到OpenCV官网下载你想要的版本,假设使用的是2.4.6版本.这里附上下载地址:http://opencv.org/do

原码,反码,补码详解及 Java中>>和>>>的区别

前两天分析 HashMap 的 hash 算法的时候,遇见了 >> 和 >>> 这两个符号,当时查了下资料,在脑子中过了一下.今天又碰到了,没想到竟然忘了  0-0........ 我这记忆力哎,不说了.只好做个笔记,提醒自己,遇到啥不会的最好记下来,好记性不如烂博客啊~ 既然涉及到位运算,我们追本索源,就先从最基础的原码,补码和反码学起.搜了一下这方面的资料,发现一篇专门介绍这方面的文章,写的很是透彻,便直接引用过来了,原文地址是:http://www.cnblogs.co

java实现原数组根据下标分隔成两个子数组并且在原数组中交换两个子数组的位置

此类实现:输出一行数组数据,根据输入的下标,以下标位置为结束,将原数组分割成两组子数组.并交换两个子数组的位置,保持子数组中的元素序号不变.如:原数组为7,9,8,5,3,2 以下标3为分割点,分割为子数组一:7,9,8,5.和子数组二:3,2.经过交换算法后的结果应为:3,2,7,9,8,5 有两种交换算法<1>前插法:将子数组3,2另存在一个临时数组中,将原数组7,9,8,5,3,2每一位向后移两个位置  再将子数组3,2插入到移动好元素位置的原数组中.<2>逆置法:将原数组7

原码,反码,补码,及Java中数字表示方法

原码:原码是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. 如:如果是八位二进制1即用00000001表示,-1即用10000001表示. 反码:正数的反码就是其本身,负数的反码是在其原码的基础上,符号位不变,其他各个位取反. 补码:正数的补码就是其本身,负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1). 利用原码计算:1 - 1 = 1 + (-1) = [00000001]原 + [10000001]原 = [10000010

2014阿里实习生面试题——哈希的原理和java中hashmap怎样实现的

1.哈希的原理 哈希的出现时由于传统数据结构如线性表(数组,链表等),树中.keyword与其他的存放位置不存在相应的关系.因此在查找keyword的时候须要逐个比对,尽管出现了二分查找等各种提高效率的的查找算法. 可是这些并不足够.希望在查询keyword的时候不经过不论什么比較.一次存取便能得到所查记录.因此,我们必须在keyword和其相应的存储位置间建立相应的关系f.这样的相应的关系f被称为哈希函数,按此思想建立的表为哈希表. 关键在于哈希函数怎样构造. 有例如以下几种方法: 1)直接定

Java中如何使封装自己的类,建立并使用自己的类库?

转自:http://blog.csdn.net/luoweifu/article/details/7281494 随着自己的编程经历的积累会发现往往自己在一些项目中写的类在别的项目中也会有多次用到.你肯定会想:如何自己的写的一些常用的类积累起来,生成自己的类库?如果是这样的话,很庆幸,你遇到通道中人了,因为我也是这样做的.下面就介绍一下我是怎么做的吧 一.先来明白一下关于classpath和path的概念 path是java中用来进行编译和运行的程序所在的路径,而classpath是类所在的路径

JAVA中数字证书的维护及生成方

Java中的keytool.exe可以用来创建数字证书,所有的数字证书是以一条一条(采用别名区别)的形式存入证书库的中,证书库中的一条证书包含该条证书的私钥,公钥和对应的数字证书的信息.证书库中的一条证书可以导出数字证书文件,数字证书文件只包括主体信息和对应的公钥.  每一个证书库是一个文件组成,它有访问密码,在首次创建时,它会自动生成证书库,并要求指定访问证书库的密码.  在创建证书的的时候,需要填写证书的一些信息和证书对应的私钥密码.这些信息包括 CN=xx,OU=xx,O=xx,L=xx,

Java基于opencv—归一化

Opencv中提供了resize函数,可以把图像调整到相同大小 Java中resize函数的声明,内部调用的都是native方法 public static void resize(Mat src, Mat dst, Size dsize, double fx, double fy, int interpolation) { resize_0(src.nativeObj, dst.nativeObj, dsize.width, dsize.height, fx, fy, interpolatio

Java基于opencv—矫正图像

更多的时候,我们得到的图像不可能是正的,多少都会有一定的倾斜,就比如下面的 我们要做的就是把它们变成下面这样的 我们采用的是寻找轮廓的思路,来矫正图片:只要有明显的轮廓都可以采用这种思路 具体思路: 1.先用opencv提供的canny函数,进行一次边缘检测 2.再用opencv提供的findContours函数,寻找图像的轮廓,从中间结果种,找到最大的轮廓,就是我们图像的最外面的轮廓 3.得到最终轮廓后,计算矩形轮廓与水平的夹角,然后旋转图像 4.最后我们在从旋转后的图像中,把我们感兴趣的切割