Articles of image processing

Android中的图像拉直

我正在开展一个需要实施Image Straightening的项目。 我有一个想法这样做。 我将SeekBar上的图像旋转为-10到+10度。 当我旋转时,白色背景是可见的。 因此,我们还需要实现缩放function,使其看起来像图像拉直,如下所示。 请咨询您的建议。 示例代码 float a = (float) Math.atan(bmpHeight/bmpWidth); // the length from the center to the corner of the green float len1 = (float) ((bmpWidth/2)/Math.cos(a-Math.abs(curRotate))); // the length from the center to the corner of the black (^ = power) float len2 = (float) Math.sqrt((bmpWidth/2)^2 + (bmpHeight/2)^2); // compute the […]

Android中的二值化图像

我正在开发使用tesseract OCR扫描图像文本的Android应用程序, 我听说在对其执行OCR之前对图像进行二值化会得到更好的结果, 所以我开始寻找执行操作的代码, 我发现很少,但它实际上在java中,需要awt库…所以他们不能在android上工作。 你能帮我找一个吗? 谢谢

Android中的Crop-to-fit图像

我已经尝试了一段时间,我想从Bitmap创建一个壁纸。 假设所需的壁纸尺寸为320×480,源图像尺寸为2048×2048。 我不确定裁剪到合适是否是正确的术语,但我想要实现的是获得与所需壁纸尺寸(320×480)具有相同比例的大部分图片。 所以在这种情况下,我想从源Bitmap获得2048×1365或(1365.333 ……确切地说),并将其缩小到320×480。 我尝试过的技术是: 1)首先将位图裁剪为2048×1365 bm = Bitmap.createBitmap(bm, xOffset, yOffset, 2048, 1365); 2)将其缩小到320×480 bm = Bitmap.createScaledBitmap(bm, 320, 480, false); 这产生了OutOfMemory错误。 有没有办法实现这个目标? 问候, dezull

在我的Android应用程序中使用ImageMagick

我无法弄清楚如何在Android上使用ImageMagick。 请有人指导我如何开始? 我应该下载什么或者我应该怎么做? 我搜索了很多堆栈问题以及许多网站,但仍然不清楚该怎么做。

Android OpenCV – 检测来自Houghlines的曲线

我正在使用OpenCV 2.4.3.2 for Android编写应用程序。 我的应用程序是关于车牌识别。 有几种方法可以做到,我选择做以下事情: 1.将图像转换为HSV色彩空间 2.根据车牌HSV的阈值图像(在我的国家,他们是黄色……) 3.使用高斯模糊平滑图像 4.检测边缘 5.find轮廓 6.资助houghlines 7.从houglines,检测与矩形匹配的曲线 我被困在7,我无法find一种方法来成功检测到后座的矩形。 我非常感谢Java中的代码示例,因为大多数示例都是在C / C ++中进行转换并不是那么简单。 这是我的代码(现在我只是画线……): Imgproc.cvtColor(inputFrame, mRGBMat, Imgproc.COLOR_RGBA2BGR); // convert HSC color space Imgproc.cvtColor(mRGBMat, mHSVMat, Imgproc.COLOR_BGR2HSV); // Filter out colors which are out of range (license plate hue ~ 14) Core.inRange(mHSVMat, new Scalar(9, 70, 80, 0), new Scalar(30, 255, 255, 0), […]

为什么在Bitmap.CompressFormat.JPEG压缩时图像的颜色发生了变化

我正在尝试压缩Android中相机拍摄的照片。 但是当它被Bitmap.CompressFormat.JPEG压缩时,图像的颜色发生了变化。 我怎么解决这个问题? 谢谢 我已经放了一些从我的代码生成的示例图像。 您可以看到图像顶部的纸张颜色不同。 这是代码片段: Bitmap bitmap = BitmapFactory.decodeFile(Common.FOLDER_PATH + “pic.jpg”); FileOutputStream stream2 = new FileOutputStream(Common.FOLDER_PATH + “pic100.jpg”); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream2); FileOutputStream stream3 = new FileOutputStream(Common.FOLDER_PATH + “pic100.png”); bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream3); 这是原始图片: 这是JPEG: 这是PNG:

在Java Camera2 API中使用OpenCV

我正在使用Android OpenCV构建实时对象检测应用程序。 我正在使用带有TextureView的Android Camera2 API来捕获图像。 我想添加OpenCV代码来进行一些实时image processing并预览结果。 这是我拍照的代码 protected void takePicture() { if(null == cameraDevice) { Log.e(TAG, “cameraDevice is null”); return; } CameraManager manager = (CameraManager) getSystemService(Context.CAMERA_SERVICE); try { CameraCharacteristics characteristics = manager.getCameraCharacteristics(cameraDevice.getId()); Size[] jpegSizes = null; if (characteristics != null) { jpegSizes = characteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP).getOutputSizes(ImageFormat.JPEG); } int width = 640; int height = 480; if […]

裁剪图像ala Google Goggles

我正在尝试在我的应用中做一些ROI(感兴趣区域)选择,但我不知道,如何创建某种可resize(用手指)矩形,就像你在Google Goggles中看到的那样。 你可以帮我吗? 有没有源代码示例?

Android PhotoView在方向改变后保持缩放

我正在使用Chris Banes的PhotoView类能够放大图像并看到它,但我想这样做,以便当我改变方向时,照片仍将在更改后放大。 我理解如何执行此操作的基础知识,当检测到方向更改时,将调用onSaveInstanceState,因此我尝试将实例保存在那里,然后在调用onCreate时将其放回到PhotoView中。 public class MainActivity extends ActionBarActivity { PhotoView mPhotoView; @Override protected void onCreate( Bundle aSavedInstanceState ) { super.onCreate( aSavedInstanceState ); mPhotoView = new PhotoView(this); mPhotoView.setMaximumScale( 12 ); setContentView( mPhotoView ); mPhotoView.setImageResource( R.drawable.vm_app_icon); if (aSavedInstanceState != null) { RectF theRect = aSavedInstanceState.getParcelable( “Rect” ); if ( theRect != null) { Matrix theMatrix = new […]

如何减少需要openCv lib的Android应用程序的apk大小(仅用于image processing)

我正在使用min SDK 15构建一个Android应用程序,该应用程序使用的是OpenCV库。问题是当我构建apk时,它的大小超过60 MB,这不是很好。 我检查了应用程序文件,由于amr64 , armeabi , mips , x86等所有架构中的amr64文件,我可以看到大小太大。 我只使用opneCv进行image processing。这个库有许多其他function,如video处理,3D图像,对象检测等等,我不需要在我的应用程序中像 如果我删除所有这些文件并构建APK,那么大小将减少50 MB,但为了使这个应用程序工作,我需要安装OpenCVManager来运行我的应用程序。 有什么方法可以减少我的apk大小? 或者只是从OpenCV提取我感兴趣的function并为这些function创建.so ?