Articles of matrix

基于OpenCV for Android的matrix乘法

我可能在这里是非常愚蠢的,但是我在使用OpenCV for Android做一些基本的Mat乘法时遇到了麻烦。 我有两个相同types的Mat, CV_64F mat1尺寸:3行,3列 mat2尺寸:3行,1列 我想乘以他们给大小3行1列的产品mat3 。 我试过使用: Mat mat3 = new Mat(3, 1, CvType.CV_64F); Core.multiply(mat1, mat2, mat3); 但是我得到一个错误: CvException [org.opencv.core.CvException:/home/andreyk/OpenCV2/trunk/opencv_2.3.1.b2/modules/core/src/arithm.cpp:1253:error:(-209)该操作既不是'array op (const cv :: _ InputArray&,const cv :: _ InputArray&,array''(其中数组的大小和通道数相同),也不是'数组运算标量',也不是'标量运算数组' const cv :: _ OutputArray&,const cv :: _ InputArray&,int,void(* )(const uchar ,size_t,const uchar *,size_t,uchar *,size_t,cv :: Size,void *),bool,void *) 我究竟做错了什么? 提前感谢您的帮助。 编辑: […]

调整图像尺度android上的IMAGEVIEW

我有一个在android中的ImageView内的图像。 我使用缩放types(MATRIX)缩放图像通过代码类似于这样的: mtrx.postScale(scale, scale); imageView.setImageMatrix(mtrx); imageView.setScaleType(ScaleType.MATRIX); imageView.invalidate(); 现在,这适当调整ImageView中包含的图像的大小,这很好,但我需要的是将图像重新定位到imageview中的位置0,0,然后将imageView自身调整为缩放图像的大小。 到目前为止,我想出的每个想法都试图重复使用相同的imageView似乎不工作,或者我只是做错了什么。 是我唯一的方法来完成这个摧毁imageview,调整位图大小,创build一个新的imageview包含新的位图创build的规模和添加回来的布局? 我真的不想这样做..我正在碰撞16兆堆堆的限制,因为它是与事情。 如何告诉matrix将图像移动到imageView的0,0位置(imageView最初是用缩放types中心创build的,缩小后图像变小了吗?那我该如何告诉imageView,嘿,你现在只是像缩放图像一样大? 提前致谢。

通过内容提供者传递二进制blob

我有一个内容提供者是我自己的一套Android应用程序的自定义内容,它需要公开的是一个小的(20-30 KiB)字节数组。 这些blob的URI如下所示: content://my.authority/blob/# 其中#是行号; 得到的游标具有标准_id列和数据列。 我在提供者的query()方法中使用MatrixCursor : byte[] byteData = getMyByteData(); MatrixCursor mc = new MatrixCursor(COLUMNS); mc.addRow(new Object[] { id, byteData }); 之后,在使用数据的应用程序中,我会: Cursor c = managedQuery(uri, null, null, null, null); c.moveToFirst(); byte[] data = c.getBlob(c.getColumnIndexOrThrow("data")); 但是,数据不包含我的原始字节数组的内容; 相反,它包含类似于[B@435cc518 ,这看起来更像是数组的地址而不是内容。 我尝试在java.sql.Blob的实现中包装字节数组,认为它可能正在寻找,因为内容提供程序子系统被编写为易于与SQLite一起使用,但它没有帮助。 有没有人得到这个工作? 如果数据在文件系统中, ContentProvider中有方法可以用来向客户端提供编组的InputStream ,但是我试图发回的数据作为内容提供者APK中的资源而存在。

如何animationmatrix“剪出”一个图像?

我试图做一个图像查看器,当用户点击图像时,图像被“裁剪”,并显示完整的图像。 例如,在下面的截图中,用户最初只能看到小狗的一部分。 但是用户点击图片后,整个小狗就显露出来了。 第一个图像后面的图像显示了animation的结果。 最初,ImageView在X和Y中缩放为50%。当用户单击图像时,ImageView缩小到100%,并重新计算ImageViewmatrix。 我尝试了各种方法来计算matrix。 但我似乎无法find一种适用于所有types作物和图像的作品:将肖像裁剪为肖像,将风景裁剪为风景,将肖像裁剪为肖像,将裁剪后的肖像裁剪为风景。 这甚至有可能吗? 这是我的代码现在。 我试图find什么要放在setImageCrop() 。 public class MainActivity extends Activity { private ImageView img; private float translateCropX; private float translateCropY; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); img = (ImageView) findViewById(R.id.img); Drawable drawable = img.getDrawable(); translateCropX = -drawable.getIntrinsicWidth() / 2F; translateCropY = -drawable.getIntrinsicHeight() / 2F; img.setScaleX(0.5F); img.setScaleY(0.5F); img.setScaleType(ScaleType.MATRIX); […]

需要从Sensor.TYPE_ORIENTATION数据计算旋转vector

我需要从Sensor.TYPE_ORIENTATION获得的数据中计算一个旋转向量。 传感器数据定义如下: 值必须重新计算以成为正确的3d位置:值[0]:方位angular,磁北方向与Y轴之间的angular度,围绕Z轴(0至359)。 0 =北,90 =东,180 =南,270 =西 值1 :绕X轴旋转(-180至180),z轴向y轴移动时为正值。 值[2]:滚动,围绕Y轴旋转(-90到90),当x轴离开z轴时具有正值 我需要像Z轴值(从0到360度)的所有三个值。 我试了很多,但不知道如何做到这一点:/ (编辑:在工作代码中查看背后的想法看看DroidAR框架的ActionWithSensorProcessing类,在那里你可以看到不同的事件types是如何处理的。) 我也尝试使用Sensor.TYPE_ACCELEROMETER和Sensor.TYPE_MAGNETIC_FIELD来自己计算这个3dvector。 这里是代码: final float[] inR = new float[16]; // load inR matrix from current sensor data: SensorManager.getRotationMatrix(inR, null, gravityValues, geomagneticValues); float[] orientation = new float[3]; SensorManager.getOrientation(inR, orientation); mapMagAndAcclDataToVector(orientation); //here i do some *360 stuff orientetionChanged(orientation); //then the correct values are passed […]

水平或垂直翻转位图图像

通过使用这个代码,我们可以旋转图像: public static Bitmap RotateBitmap(Bitmap source, float angle) { Matrix matrix = new Matrix(); matrix.postRotate(angle); return Bitmap.createBitmap(source, 0, 0, source.getWidth(), source.getHeight(), matrix, true); } 但是,我们怎样才能水平或垂直翻转图像?

将matrix图像定位在图像的中心

我创build了一个图片库,一切正常。 放大和移动图像是必需的 ImgView.setScaleType (ImageView.ScaleType.MATRIX) 当我这样做时,我得到的图像很小,所以我打电话给方法 scaleFactor = view.getWidth()/(float)view.getDrawable().getIntrinsicWidth(); matrix.setScale(scaleFactor, scaleFactor); 所以不要错过图像的大小,但正如你所看到的,图像高于一切,需要留在屏幕的中心。 我试过这个 matrix.postTranslate((screen_width-image_width)/2, (screen_height-image_height)/2); 但不工作。 任何想法? 对不起,不插入图像,但我不能因为我的声誉。 非常感谢你提前

我怎样才能限制我的帆布的翻译matrix?

所以我扩展了一个自定义的SurfaceView并试图使它具有捏缩放和滚动function。 我如何滚动: @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { // subtract scrolled amount matrix.postTranslate(-distanceX, -distanceY); rebound(); invalidate(); // handled return true; } 我如何缩放: @Override public boolean onScale(ScaleGestureDetector detector) { if (detector.isInProgress()) { // get scale float factor = detector.getScaleFactor(); // Don't let the object get too small or too large. […]

用Barcode Scanner(Vision)编码Data Matrix的未知编码

我试图扫描一些数据matrix条形码与我的视觉条码扫描器的实施,但我在编码的问题。 我在用着: int codesDetected = Barcode.ALL_FORMATS; 但它仍然返回这些的未知编码。 另一方面,Google Goggles应用程序正确扫描它们,对于使用zxing的其他条形码阅读器也是如此。 条码示例: 如果解决了这个问题,我愿意转移到Zxing,但是我想知道在我的实现(我拿了Vision示例应用程序)中是否有这些types的条形码(数据matrix编码)丢失的东西。 谢谢

缩放位图的方法之间的区别

在Android中至less有两种扩展位图的方法,一种是在解码位图源时使用“BitmapFactory.Options”中的“inScaled,inDensity,inTargetDensity”。 另一种是在“Bitmap.createBitmap”中使用“Matrix”。 我很好奇的是这两种方法的区别是什么? 生成的位图的质量如何? 内存使用情况如何? 等等…