Articles of image processing

Android如何做图像屏幕幻灯片?

我正在android上构建一个非常基本的图库,它显示了相机文件夹中的最后一个图像,用户可以向左滑动以查看上一个图像。 我使用viewpager完成了一个实现,使用sampleSize完成了一个pagerAdapter来扩展图像。 我的问题是,实现没有默认的图库应用程序那么高效,每次滑动图像时,您必须等待大约200毫秒才能加载下一个图像。 所以基本上我对如何实现它的想法并没有成功。 如何有效地执行此操作,如果可能,可以使用允许稍后放大和缩小的实现? 这看起来很有希望,但我不知道如何使用文件而不是drawable实现它http://www.androidviews.net/2012/11/photoview/ 编辑: 我已经设法使用photoview(一个被攻击的viewpager)提高了一点速度,但是将文件路径转换为位图或drawables需要花费太多。 我尝试过dilix和iDroid Explorer建议的这两种方法: // Method A Drawable d = Drawable.createFromPath(imagePath); imageView.setImageDrawable(d); // Method B Bitmap myBitmap = BitmapFactory.decodeFile(imagePath); imageView.setImageBitmap(myBitmap); 但两者都产生错误Bitmap too large to be uploaded into a texture 。 我需要尽快将图像提供给imageView,并以某种方式绕过这个错误,也许我会得到一个不错的速度。 现在我正在缩放图像并将它们转换为可绘制图像,但效率不高。

渐进式图像渲染,逐像素加载图像并更新imageLoader中的imageview

我正在开发一个应用程序,我需要在列表中加载服务器映像。 但是显示图像的方式有点不同。 我需要在下载时显示图像,即逐个像素。 最初,图像设置为模糊图像,而不是下载,图像设置得更清晰,并且会产生原始图像。 如果你想看看我在说什么,你可以参考以下链接: 渐进式图像渲染 在这里你可以看到优质PNG风格的二维隔行渲染(第二个)的演示。 我瞪了很多但没有find任何相关的答案我的查询。 任何forms的帮助都会很明显。 提前致谢。

如何检测墙的长边准备面具和重新着色

主要思想是允许用户重新着色到特定的基于墙的用户选择。 目前我已经使用cvFloodFill实现了这个function(有助于准备掩模图像),这可以帮助我改变墙的相对HSV值,这样我就可以保留边缘。 但是这个解决方案的问题在于它适用于颜色,并且所有墙壁都被重新绘制,而不是由用户选择的单个墙壁。 我也尝试过canny边缘检测,但它只能检测边缘但无法将其转换为区域。 请在下面find我目前用于重绘function的代码 准备面具 cvFloodFill(mask, new CvPoint(295, 75), new CvScalar(255, 255, 255,0), cvScalarAll(1), cvScalarAll(1), null, 4, null); 分道 cvSplit(hsvImage, hChannel, sChannel, vChannel, null); 换颜色 cvAddS(vChannel, new CvScalar(255*(0.76-0.40),0,0,0), vChannel, mask); 我们如何从图像中检测边缘和相应区域。 我正在寻找除opencv之外的解决方案,但应该可以用于iPhone和Android 编辑 我可以使用以下步骤在下面的图像中获得一些结果 cvCvtColor(image, gray, CV_BGR2GRAY); cvSmooth(gray,smooth,CV_GAUSSIAN,7,7,0,0); cvCanny(smooth, canny, 10, 250, 5); 这个输出有两个问题,不知道如何解决它们1.靠近边缘近距离2.去除小边缘

Android设备上的GPU编程

我不了解GPU编程,我想对此进行概述。 我必须开发一个image processing项目,在智能手机的GPU上工作(在Android设备上),但我不知道从哪里开始。 1)编程智能手机的GPU和编程其他GPU(例如Nvidia GeForce 9)是否相同? 2)我听说过GPU的计算或图形编程:有什么区别? 他们是平等的吗? 3)我已经配置Eclipse来开发Android应用程序:我需要哪些其他工具? 4)智能手机的GPU编程(适用于Android)是独立于设备的吗? 三星S4,LG G3和其他Android设备是否相同? 5)我需要什么样的图书馆? 我听说过Nvidia的OpenCV和Tegra包。 你能帮我解决这个问题吗? 另外,你能帮我find任何有针对性的链接吗?

Matcher Assertions失败错误opencv Android

我正在编写代码来从camerapreview中的drawable中find类似的对象。 我使用的是最新的Opencv 2.4.4。 下面是我的函数和logcat的输出。 我得到这样的输出我做错了什么? public void detect_image (Mat mRgba) { object_desc = new Mat(); scene_desc = new Mat(); object_keys = new MatOfKeyPoint(); scene_keys = new MatOfKeyPoint(); matches = new MatOfDMatch(); good_matches = new MatOfDMatch(); Bitmap image = BitmapFactory.decodeResource(getResources(), R.drawable.sto); Utils.bitmapToMat(image,object); surf = FeatureDetector.create(FeatureDetector.FAST); surf.detect( object, object_keys ); surf.detect( mRgba, scene_keys); surfEX = DescriptorExtractor.create(DescriptorExtractor.BRIEF); surfEX.compute(object, […]

使用动态位图设置在Android上实现KenBurns效果

背景 我正在动作栏上实现“ KenBurns效果 ”(演示这里 ),如图书馆的示例所示(移动的图标除外,我自己这样做)。 事实上,我甚至在很久以前( 这里 )问过这个问题,在这一点上我甚至都不知道它的名字。 我确信我find了解决方案,但它有一些问题。 此外,由于我有时会显示设备中的图像,因此有些甚至需要旋转,因此我使用了rotateDrawable(如此处所示)。 问题 当前实现无法处理动态给出的多个位图(例如,来自Internet),甚至不能查看输入图像的大小。 相反,它只是以随机方式进行缩放和平移,因此很多时候它可以缩放太多/太少,并且可以显示空白空间。 代码 这是与问题相关的代码: private float pickScale() { return MIN_SCALE_FACTOR + this.random.nextFloat() * (MAX_SCALE_FACTOR – MIN_SCALE_FACTOR); } private float pickTranslation(final int value, final float ratio) { return value * (ratio – 1.0f) * (this.random.nextFloat() – 0.5f); } public void animate(final ImageView view) { final […]

如何以编程方式更改android中位图的对比度?

我想以编程方式更改位图的对比度。 直到现在我已经尝试过了。 private Bitmap adjustedContrast(Bitmap src, double value) { // image size int width = src.getWidth(); int height = src.getHeight(); // create output bitmap Bitmap bmOut = Bitmap.createBitmap(width, height, src.getConfig()); // color information int A, R, G, B; int pixel; // get contrast value double contrast = Math.pow((100 + value) / 100, 2); // scan […]

Androidvideo帧处理

我正在开发应用程序,在相机帧上进行一些实时image processing。 为此,我使用预览回调的方法onPreviewFrame 。 这适用于支持分辨率至少为640×480或更大的预览帧的相机。 但是当相机不支持如此大的相机预览分辨率时,应用程序被编程为拒绝处理这样的帧。 现在,我Sony Xperia的问题是Sony Xperia Go等手机。 这是一个非常好的设备,可以录制分辨率高达1280×720的video,但不幸的是,最大相机预览尺寸为480×320,这对我的需求来说太小了。 我想知道的是如何获得这些larger camera frames (高达1280×720或更高)? 显然它必须是可能的,因为相机应用程序能够以该分辨率记录video – 因此该应用程序必须能够以某种方式访问​​那些较大的帧。 如何从我的应用程序中执行相同的操作? 应用程序必须支持Android 2.1及更高版本,但即使我find针对Android 4.0或更新版本的问题的解决方案,我也会非常高兴。 这个问题类似于http://stackoverflow.com/questions/8839109/processing-android-video-frame-by-frame-while-recording ,但我不需要保存video – 我只需要那些高分辨率video帧… 非常感谢你提前!

Android:如何扭曲图像?

我想像这样扭曲图像: 已添加08-04-2013 :我使用了此代码,但它无法正常工作: private static final int WIDTH = 20; private static final int HEIGHT = 20; private static final int COUNT = (WIDTH + 1) * (HEIGHT + 1); private final Bitmap mBitmap; private final float[] mVerts = new float[COUNT*2]; private final float[] mOrig = new float[COUNT*2]; private final Matrix mMatrix = new Matrix(); […]

使用Android的内置手势监听器和缩放监听器实现捏缩放和拖动

我正在尝试使用Android的手势监听器和缩放监听器来实现缩放缩放和拖动。 问题是,当我执行捏拉缩放时,图像(我试图缩放)会反弹到特定位置。 变焦位置也不居中。 以下代码演示了我想要实现的目标。 知道为什么图像跳跃(以及如何纠正)? public class CustomView extends View { Bitmap image; int screenHeight; int screenWidth; Paint paint; GestureDetector gestures; ScaleGestureDetector scaleGesture; float scale = 1.0f; float horizontalOffset, verticalOffset; int NORMAL = 0; int ZOOM = 1; int DRAG = 2; boolean isScaling = false; float touchX, touchY; int mode = NORMAL; public CustomView(Context […]