android opencv

 

最近工作需求:用opencv来先做一个demo。扫描照片进行边缘检测和透视矫正。

之后会加入照片降噪等处理。

 

请教了一下搞图像的同事。他的提议:

1、绿盟的“黄色照片检测” 用的是动态的opencv库。apk反编译出来有显示,导致技术人员对这个的应用评价变差。

2、opencv 用在这两个功能上,属于大材小用。用c语言写一两个函数,java层把照片传到c层。速度很快就可以完成。

3、opencv 只是提供一个框架,具体的功能实现,还是要自己写。功能很少的情况下,没有想象的那么好用和简便。

4、推荐了两本书

深入理解OpenCV:实用计算机视觉项目解析 [Mastering OpenCV with Practical Computer Vision Pr]

Android OpenCV应用程序设计/(Joseph Howse)著,赵雷 译

 

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Canny函数。线条太多

 

 

 

采用Java层的findContours函数做尝试

 

 findContours

public static void findContours(Mat image,
                                java.util.List<MatOfPoint> contours,
                                Mat hierarchy,
                                int mode,
                                int method)

findContours

public static void findContours(Mat image,
                                java.util.List<MatOfPoint> contours,
                                Mat hierarchy,
                                int mode,
                                int method,
                                Point offset)

 

 

其中的参数

mode 
提取模式. 
CV_RETR_EXTERNAL - 只提取最外层的轮廓  (这个就真的只有外层轮廓,数组数据个数为1)
CV_RETR_LIST - 提取所有轮廓,并且放置在 list 中 
CV_RETR_CCOMP - 提取所有轮廓,并且将其组织为两层的 hierarchy: 顶层为连通域的外围边界,次层为洞的内层边界。  (这个会将图片的方形边框连起来)
CV_RETR_TREE - 提取所有轮廓,并且重构嵌套轮廓的全部 hierarchy 

posted @ 2015-05-27 14:49  马小豆包  阅读(522)  评论(0编辑  收藏  举报