有没有人知道Android的任何好的图像处理教程?我是android的新手,我正在编写一个对位图产生影响的应用程序。我可以在java中找到很多教程,但android不支持awt。我想使用android sdk操作位图中的像素,例如:翘曲,鱼眼等我可以访问像素并改变它们的颜色,但我对转换不太好,不知道从哪里开始。
答案 0 :(得分:18)
检查出来(在[基础知识] 29之后向下滚动):
http://xjaphx.wordpress.com/learning/tutorials/
有一些很棒的教程,如:
答案 1 :(得分:8)
您还可以签出JavaCV,它为您提供绑定到opencv lib的Java对象。 这样你就不需要进行任何c / c ++编码了,你可以直接在Java中完成所有操作并从opencv访问函数。
回答你的后续问题:
例如,采用圆柱投影:看一下图像 -
(对不起,我不允许发布图片) 这取自Szeliskis书(http://szeliski.org/Book/)。 你最终在这里的关系是
x'=s*tan⁻¹(x/f)
和
y'=s*(y/sqrt(x²+f²))
其中f是摄像机的焦距和圆柱的半径,你可以使用f = s。 现在将其转换为循环,这里有一些伪代码:
%% xMitte , yMitte are the coordinates for the point in the middle
for yNeu =1: height
for xNeu =1: width
dx = xNeu - xMitte ; %% X relativ to origin
dy = yNeu - yMitte ; %% Y relativ to origin
theta = atan(dx / f);
h = dy / sqrt(dx ^2+f^2);
x = (f * theta) + xMitte ;
y = (f * h) + yMitte ;
BildNeu (xNeu ,yNeu) = BildAlt (x, y);
end
end
BildNeu是新图片,这个数组与BildAlt(原始图片)大小相同。
内循环结束时BildNeu和BildAlt的行可能如下:
/** returns the color value of that pixel **/
CvScalar pixel = cvGet2D(originalImage, i, j);
/** writes the new color value of that pixel **/
cvSet2D(destinationImage, y, x, pixel);
答案 2 :(得分:3)
OpenCV Android是首选,因为在Android平台上易于使用,尽管可能存在限制。以下是一些可能有用的参考资料:
1.在Android平台上学习图像处理的最佳方法是通过实施。尝试运行并了解Android Studio / Eclipse上现有的OpenCV4Android示例。它们可在https://github.com/joaopedronardari/OpenCV-AndroidSamples上找到。
OpenCVAndroid Samples页面上提供了每个示例的说明。混合处理,相机控制,图像处理和色斑检测处理预处理和图像处理。它们包括:
RGBA和灰色预览
Canny(边缘检测)
查找功能
色彩效果
直方图
棕褐色
Sobel过滤器
缩放
Pixelize
色调分离
流域转型
标记(斑点检测)
由于您将在Java平台上工作,因此将使用OpenCV Java教程。
4.查看Android Arsenal,用于图像处理库。
注意:必须将Mat对象转换为Bitmap对象,才能在设备屏幕(ImageView)上显示它。
答案 3 :(得分:0)
也许你会在OpenCV java bindings取得一些成功。除此之外,没有任何我知道的东西会有所帮助。