`

1.颜色提取并标记外接矩形

阅读更多

// 读取图像
        Mat image = Imgcodecs.imread("2023.jpg");
        // 将图像转换为HSV格式
        Mat hsv = new Mat();
        Imgproc.cvtColor(image, hsv, Imgproc.COLOR_BGR2HSV);
        // 定义颜色范围(例如:蓝色)
        Scalar lowerBlue = new Scalar(100, 50, 50);
        Scalar upperBlue = new Scalar(130, 255, 255);
        // 创建掩码并应用
        Mat mask = new Mat();
        Core.inRange(hsv, lowerBlue, upperBlue, mask);
        // 查找掩码中的轮廓
        List<MatOfPoint> contours = new ArrayList();
        Imgproc.findContours(mask, contours, new Mat(), Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_SIMPLE);
        List<MatOfPoint> selectList = new ArrayList();
        int len = contours.size();
        for(int i=0;i<len;i++){
            MatOfPoint2f point = new MatOfPoint2f();
            point.fromList(contours.get(i).toList());
            double zc = Imgproc.arcLength(point, true);
            if(zc>450 && zc < 510){
                double area = Imgproc.contourArea(contours.get(i));
                if(area> 4000 && area < 4500) {
                    selectList.add(contours.get(i));
                    System.out.println("zc: "+zc+",area: "+area);
                }
            }
        }
        System.out.println(selectList.size());
        Imgproc.drawContours(image, selectList, -1, new Scalar(0, 255, 0), 5);
        Imgcodecs.imwrite("2023-in3.jpg", image);



System.load("opencv_java455.dll");
   Mat
   Rect
   Imgproc
   Imgcodecs
   Size
   Core
   Scalar
   List<MatOfPoint> contours = new ArrayList()
   边缘检测
   Imgproc.Canny
   周长
   Imgproc.arcLength
   Imgproc.approxPolyDP
   轮廓
   Imgproc.findContours
   外围矩形
   Rect rect = Imgproc.boundingRect(selectList.get(0))
   裁剪图像
    Rect rect =new Rect(1800, 1400, 800, 500);
    Mat croppedImage = new Mat(img, rect);
高斯模糊
Imgproc.GaussianBlur
颜色空间转换
Imgproc.cvtColor
Imgcodecs.imread
Imgcodecs.imwrite
颜色区域提取
Core.inRange
Core.bitwise_and
Core.subtract
取反
Core.bitwise_not
BFMatcher
FeatureDetector.create(FeatureDetector.SIFT)
加载Haar分类器
    CascadeClassifier faceDetector = new CascadeClassifier("haarcascade_frontalface_alt2.xml");
检测面部
faceDetector.detectMultiScale
MatOfRect
画矩形
Imgproc.rectangle
new Point(rect.x + rect.width, rect.y + rect.height)
去噪处理
    Mat kernel = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(3, 3));
开运算
    Imgproc.morphologyEx(binary, binary, Imgproc.MORPH_OPEN, kernel);
    Imgproc.morphologyEx(binary, binary, Imgproc.MORPH_CLOSE, kernel);
Imgproc.matchTemplate
归一化
Core.normalize(bsrc, normalizedPoints, 0, 120, Core.NORM_MINMAX)
Imgproc.resize
分离前景  区域分割
Imgproc.grabCut
Imgproc.calcHist
Core.split
Imgproc.equalizeHist
Core.merge
Imgproc.threshold
Imgproc.erode
Imgproc.dilate
图像压缩
Imgproc.pyrDown

scale:用于调整图像的大小。
crop:用于裁剪图像。
rotate:用于旋转图像。
drawtext:用于在图像上添加文本。
watermark:用于在图像上添加水印。
convert:用于转换图像的颜色空间。
format:用于改变图像的格式。
colorspace:用于改变图像的颜色空间。
brightness:用于调整图像的亮度。
contrast:用于调整图像的对比度。
gamma:用于调整图像的gamma值。
hue:用于调整图像的色相。
saturation:用于调整图像的饱和度。
luminance:用于调整图像的亮度。
ssim:用于计算图像的 SSIM 质量指数。
psnr:用于计算图像的 PSNR 质量指数。


img.flatten()
分享到:
评论

相关推荐

    Ycbcr颜色空间下成熟苹果识别(有标记方框)

    4. **最小外接矩形**:在识别出苹果后,可能需要找到包含所有苹果像素的最小外接矩形,以减少后续处理的计算复杂性。这个过程通常涉及几何变换,如旋转和平移,以确保矩形与苹果的边界尽可能贴合。 5. **孔洞填充**...

    寻找二值图像中的边通域并标记

    接下来,我们可以使用`boundingRect()`函数计算每个连通组件的最小外接矩形,从而获取每个区域的长和宽。 以下是一个简单的步骤概述: 1. **预处理**:首先,我们需要将原始图像转换为二值图像,这可以通过阈值...

    二值图像的形状特征提取并显示在图片上

    4. **形状描述符**:除了基本的几何特征,还可以计算更复杂的形状描述符,如霍夫变换(用于检测直线和圆)、轮廓的边界框和最小外接矩形等。这些信息可以帮助我们更好地理解形状的特性。 5. **特征可视化**:最后,...

    ROI提取_ROI_matlab_最小矩形;分割旋转_

    MATLAB提供了`minboundrect`函数来实现这个功能,它能计算出边界点集的最小外接矩形的顶点坐标。 接下来,我们将图像沿着这个最小矩形进行分割。这一步通常是为了便于后续操作,例如裁剪不必要的背景或者对ROI进行...

    基于MATLAB的工业机器人智能视觉系统实训平台设计分析.pdf

    MATLAB提供regionprops函数用于提取图像区域的属性特征,包括面积、最小外接矩形、质心和周长等。而边缘提取函数如edge和Hough变换常用于线段检测。这些算法能够帮助系统准确地识别出图像中的产品特征,并为后续的...

    OpenCV 表盘指针自动读数的示例代码

    通过遍历轮廓并计算外接矩形的面积,可以找到最接近理想钟表形状的矩形,从而确定圆心位置。这种方法依赖于钟表的大小,所以面积阈值需要适当设定。 3. **图片裁剪**: - **图像裁剪**:根据找到的圆心,裁剪出...

    足球机器人视觉系统的目标识别方法研究.pdf

    4. 游程编码法的区域连接和特征提取:在游程编码过程中,除了进行连通性分析外,还需提取图像的区域特征,如区域的中心坐标、面积、游程长度以及最小外接矩形。这些特征对目标识别至关重要,因为它们有助于更准确地...

    《Matlab计算机视觉与深度学习实战》代码 基于阈值分割的车牌定位识别.zip

    这一步通常涉及霍夫变换或最小外接矩形算法。 7. 车牌字符分割:定位到车牌后,还需将单个字符分离开来,以便进行字符识别。这可能涉及到垂直投影、水平扫描线等方法。 8. 字符识别:最后,使用深度学习模型(如...

    颜色和形状检测

    例如,圆形可能具有接近常数的周长/面积比,而矩形的轮廓可以通过最小外接矩形来识别。 对于更复杂的形状识别,可能需要使用霍夫变换或模板匹配。霍夫变换可以检测直线、圆、椭圆等几何形状;模板匹配则是将已知...

    基于改进K_均值算法在彩色图像分割中的应用

    2. **连通区域标记**:对分割后的区域进行连通标记,找出最大的连通区域及其外接矩形。 3. **精确分割**:利用改进的K-均值算法对提取的目标区域进行精确分割。在此过程中,可能会产生一些过小的区域图像,需要采取...

    基于Opencv的轮廓检出示例 C++编写

    // 获取轮廓的最小外接矩形 double area = cv::contourArea(contours[i]); // 计算轮廓面积 std::vector&lt;cv::Point&gt; approx; cv::approxPolyDP(contours[i], approx, cv::arcLength(contours[i], true) * 0.02, ...

    二值图的形状特征|推荐代码

    7. **形状填充**:VB中可以实现形状填充算法,将指定形状内部的所有像素标记为同一颜色,这在可视化和进一步处理中很有用。 在描述中提到的“广覆SEO优化”可能是指如何通过搜索引擎优化技术,提高与二值图形状特征...

    OpenCV常用函数

    - **功能B**: 使用外接矩形描述椭圆。 **用途**: 用于图形绘制和形状分析。 #### 38. EqualizeHist **功能**: 直方图均衡化。 **用途**: 改善图像的对比度,提高图像质量。 #### 39. Filter2D **功能**: 应用二维...

    Code.rar_图形图像处理_matlab_

    这通常涉及图像预处理(如灰度化、归一化),然后应用边缘检测算法(如Canny边缘检测)来找出嘴部轮廓,再通过形态学操作细化边缘,最后利用几何特性(如最小外接矩形或质心计算)来确定嘴的中心坐标。 3. **显微镜...

    一种基于监控视频的车型识别和车流量检测算法

    首先,通过计算目标车辆轮廓的外接最小矩形框面积,对车型进行初步判断。接着,利用扩展Kalman滤波器进行车辆的跟踪,统计车辆轮廓在检测区域内的持续帧数,以更精确地确定车型。通过这种方法,可以更准确地识别车辆...

Global site tag (gtag.js) - Google Analytics