android图像处理教程?
有人知道android的图像处理教程吗?我是android新手,我正在编写一个应用程序,在位图上放置一个效果。我可以找到很多java教程,但android不支持awt。我想只使用android sdk操作位图中的像素,例如扭曲、鱼眼等。我可以访问像素并更改它们的颜色,但我不太擅长转换,也不确定从哪里开始 也许你会在这方面取得一些成功。除此之外,据我所知,没有任何东西能帮上忙。您也可以签出JavaCV,它为您提供了绑定到opencv库的Java对象。 这样,您就不需要进行任何c/c++编码,您可以直接在Java中完成所有工作,并从opencv访问函数 回答您的后续问题: 例如,以圆柱形投影为例:查看图像- (对不起,我不允许发布图片) 这本书摘自舍利斯基的书()。 你在这里的关系最终是android图像处理教程?,android,image,image-processing,Android,Image,Image Processing,有人知道android的图像处理教程吗?我是android新手,我正在编写一个应用程序,在位图上放置一个效果。我可以找到很多java教程,但android不支持awt。我想只使用android sdk操作位图中的像素,例如扭曲、鱼眼等。我可以访问像素并更改它们的颜色,但我不太擅长转换,也不确定从哪里开始 也许你会在这方面取得一些成功。除此之外,据我所知,没有任何东西能帮上忙。您也可以签出JavaCV,它为您提供了绑定到opencv库的Java对象。 这样,您就不需要进行任何c/c++编码,您可以
x'=s*tan⁻¹(x/f)
及
其中f是相机的焦距,s是圆柱体的半径,可以使用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);
查看此内容(在[基础知识]29之后向下滚动):
有一些很棒的教程,如:
- 平均去除效应
- 平滑效果
- 浮雕效果
- 雕刻效果
- 增强色彩强度
- 圆角图像
- 动态水印
- 图像翻转/镜像
- 像素颜色替换
- 淡色
- 跳蚤/噪音效应
- 黑色过滤器(增加黑暗度)
- 雪效应
- 着色过滤器
- 饱和滤波器
- 色调过滤器
- 图像反射效应
- 在曲线上绘制文本
注意:为了在设备屏幕(ImageView)上显示Mat对象,必须将其转换为位图对象 好的,谢谢,用javacv做径向变换容易吗?我必须说我从来没有用过javacv。。。只能直接使用opencv(android分支=>)。如果你很容易知道变换矩阵,你就可以进行变换,否则如果你只知道你想要的投影公式,你就可以编写循环并自己将每个像素变换到新的坐标。嗨,谢谢你回来。我发现一个帖子,有人把鱼眼扭曲从C++转录成java。它使用了awt的BuffereImage,所以我只是将该类中的setARGB方法与bitmap类中相应的setPixel方法进行了匹配,结果是:)。我会对你上面提到的循环感兴趣。如果你只知道投影的公式,你会怎么做?如何将每个像素转换为其新坐标?我是否有一个src数组和一个dst数组并应用公式?@turtleboy我在回答中添加了一个例子(因为代码中的格式不可能看起来很好。很抱歉没有翻译变量名,但我只是从我的毕业论文中复制粘贴的(德语)正如我在这里解释的,我在我的代码中使用的投影,感谢这个例子,花时间和它分享。数学不是我的优点,但是我会看一看。我发现了一些代码,它能让某人从C++转录成java。然后我重构了代码,用位图代替缓冲区。但是我需要深入研究。为了我自己的利益,我将其转换为图形。再次感谢。有没有机会将代码与世界其他地方一起转换?@netlander当然有,先生。我现在已经让应用程序效果工作了,并且仅在Android中就这样做了。我重新编写了一个过滤器类,使用位图而不是缓冲图像。有什么用于图像标记的吗?@Sauron:你可以试试这个:这是世界上最难、最复杂的导入库
/** 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);