Android OpenCv4如何实现边缘检测及轮廓绘制出图像最大边缘
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇内容介绍了"Android OpenCv4如何实现边缘检测及轮廓绘制出图像最大边缘"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!
千家信息网最后更新 2026年11月03日Android OpenCv4如何实现边缘检测及轮廓绘制出图像最大边缘
本篇内容介绍了"Android OpenCv4如何实现边缘检测及轮廓绘制出图像最大边缘"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
Canny边缘检测
基于Canny算法的边缘检测主要有5个步骤,依次是
高斯滤波、像素梯度计算、非极大值像素梯度抑制、滞后阈值处理和孤立弱边缘抑制。Canny在有噪声的情况下表现好不好,取决于前面的降噪过程,可以手动做高斯处理提高识别率。
/** image 输入图像,必须是CV_8U的单通道或者三通道图像。 edges 输出图像,与输入图像具有相同尺寸的单通道图像,且数据类型为CV_8U。 threshold1 第一个滞后阈值。 threshold2 第二个滞后阈值。 apertureSize Sobel算子的直径。 L2gradient 计算图像梯度幅值方法的标志。默认为false**/public static void Canny(Mat image, Mat edges, double threshold1, double threshold2, int apertureSize, boolean L2gradient)使用
/** * canny算法,边缘检测 */ public static Mat canny(Bitmap bitmap) { Mat mSource = new Mat(); Utils.bitmapToMat(bitmap, mSource); Mat grayMat = new Mat(); Imgproc.cvtColor(mSource,grayMat,Imgproc.COLOR_BGR2GRAY);//转换成灰度图 Mat mat = mSource.clone(); Imgproc.Canny(mSource, mat, 75, 200); return mat; }获取图像最大矩形
/** * 返回边缘检测之后的最大矩形,并返回 * * @param cannyMat * Canny之后的mat矩阵 * @return */ public Rect findMaxRect(Mat cannyMat) { Mat tmp = mSource.clone(); List contours = new ArrayList(); Mat hierarchy = new Mat(); // 寻找轮廓 Imgproc.findContours(cannyMat, contours, hierarchy, Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_SIMPLE); int index = 0; double perimeter = 0; // 找出匹配到的最大轮廓 for (int i = 0; i < contours.size(); i++) { // 最大面积// double area = Imgproc.contourArea(contours.get(i)); //最大周长 MatOfPoint2f source = new MatOfPoint2f(); source.fromList(contours.get(i).toList()); double length = Imgproc.arcLength(source,true); if(length>perimeter){ perimeter = length; index = i; } } /** * 参数一:image,待绘制轮廓的图像。 * * 参数二:contours,待绘制的轮廓集合。 * * 参数三:contourIdx,要绘制的轮廓在contours中的索引,若为负数,表示绘制全部轮廓。 * * 参数四:color,绘制轮廓的颜色。 * * 参数五:thickness,绘制轮廓的线条粗细。若为负数,那么绘制轮廓的内部。 * * 参数六:lineType,线条类型。FILLED LINE_4 4连通 LINE_8 8连通 LINE_AA 抗锯齿 */ Imgproc.drawContours( tmp, contours, index, new Scalar(0.0, 0.0, 255.0), 9, Imgproc.LINE_AA ); Rect rect = Imgproc.boundingRect(contours.get(index));// Imgproc.rectangle(tmp, rect, new Scalar(0.0, 0.0, 255.0), 4, Imgproc.LINE_8); showImg(tmp); return rect; } /** * 显示图像 * @param mat */ private void showImg(Mat mat){ Bitmap bitmap = Bitmap.createBitmap(mat.width(), mat.height(), Bitmap.Config.ARGB_8888); Utils.matToBitmap(mat, bitmap); mIvSrc.setImageBitmap(bitmap); mat.release(); } "Android OpenCv4如何实现边缘检测及轮廓绘制出图像最大边缘"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
轮廓
边缘
图像
检测
参数
最大
梯度
阈值
出图
像素
内容
情况
更多
知识
矩形
算法
类型
线条
负数
过程
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技园
互联网下的科技发展
麻工互联网科技
互联网公司 科技公司
互联网 卓越科技
互联网科技的英文
上海万想互联网科技
互联网科技美容
银川新华互联网科技学校地址
深圳国际航运科技和互联网
茂名市互联网科技产业园
米聚互联网科技南京有限公司排面
互联网科技研发水平
广西互联网科技孵化中心
浙南科技城互联网大厦建设工程
互联网科技公司营业执照怎么办理
互联网企业科技类企业如何做账
上海万顺科技互联网有限公司招聘
同城互联网络科技
数字互联网科技有限公司
新华互联网科技学校
科技类互联网
盛创互联网科技有限公司
青岛中康互联网医疗科技有限公司
互联网软件和科技
国大互联网教育科技有限公司工作
本届互联网博览会上的黑科技
互联网公司黑科技创始人
怎样加入科技互联网
中国科技和美国互联网