// 读取图像
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()
分享到:
相关推荐
4. **最小外接矩形**:在识别出苹果后,可能需要找到包含所有苹果像素的最小外接矩形,以减少后续处理的计算复杂性。这个过程通常涉及几何变换,如旋转和平移,以确保矩形与苹果的边界尽可能贴合。 5. **孔洞填充**...
接下来,我们可以使用`boundingRect()`函数计算每个连通组件的最小外接矩形,从而获取每个区域的长和宽。 以下是一个简单的步骤概述: 1. **预处理**:首先,我们需要将原始图像转换为二值图像,这可以通过阈值...
4. **形状描述符**:除了基本的几何特征,还可以计算更复杂的形状描述符,如霍夫变换(用于检测直线和圆)、轮廓的边界框和最小外接矩形等。这些信息可以帮助我们更好地理解形状的特性。 5. **特征可视化**:最后,...
MATLAB提供了`minboundrect`函数来实现这个功能,它能计算出边界点集的最小外接矩形的顶点坐标。 接下来,我们将图像沿着这个最小矩形进行分割。这一步通常是为了便于后续操作,例如裁剪不必要的背景或者对ROI进行...
MATLAB提供regionprops函数用于提取图像区域的属性特征,包括面积、最小外接矩形、质心和周长等。而边缘提取函数如edge和Hough变换常用于线段检测。这些算法能够帮助系统准确地识别出图像中的产品特征,并为后续的...
通过遍历轮廓并计算外接矩形的面积,可以找到最接近理想钟表形状的矩形,从而确定圆心位置。这种方法依赖于钟表的大小,所以面积阈值需要适当设定。 3. **图片裁剪**: - **图像裁剪**:根据找到的圆心,裁剪出...
4. 游程编码法的区域连接和特征提取:在游程编码过程中,除了进行连通性分析外,还需提取图像的区域特征,如区域的中心坐标、面积、游程长度以及最小外接矩形。这些特征对目标识别至关重要,因为它们有助于更准确地...
这一步通常涉及霍夫变换或最小外接矩形算法。 7. 车牌字符分割:定位到车牌后,还需将单个字符分离开来,以便进行字符识别。这可能涉及到垂直投影、水平扫描线等方法。 8. 字符识别:最后,使用深度学习模型(如...
例如,圆形可能具有接近常数的周长/面积比,而矩形的轮廓可以通过最小外接矩形来识别。 对于更复杂的形状识别,可能需要使用霍夫变换或模板匹配。霍夫变换可以检测直线、圆、椭圆等几何形状;模板匹配则是将已知...
2. **连通区域标记**:对分割后的区域进行连通标记,找出最大的连通区域及其外接矩形。 3. **精确分割**:利用改进的K-均值算法对提取的目标区域进行精确分割。在此过程中,可能会产生一些过小的区域图像,需要采取...
// 获取轮廓的最小外接矩形 double area = cv::contourArea(contours[i]); // 计算轮廓面积 std::vector<cv::Point> approx; cv::approxPolyDP(contours[i], approx, cv::arcLength(contours[i], true) * 0.02, ...
7. **形状填充**:VB中可以实现形状填充算法,将指定形状内部的所有像素标记为同一颜色,这在可视化和进一步处理中很有用。 在描述中提到的“广覆SEO优化”可能是指如何通过搜索引擎优化技术,提高与二值图形状特征...
- **功能B**: 使用外接矩形描述椭圆。 **用途**: 用于图形绘制和形状分析。 #### 38. EqualizeHist **功能**: 直方图均衡化。 **用途**: 改善图像的对比度,提高图像质量。 #### 39. Filter2D **功能**: 应用二维...
这通常涉及图像预处理(如灰度化、归一化),然后应用边缘检测算法(如Canny边缘检测)来找出嘴部轮廓,再通过形态学操作细化边缘,最后利用几何特性(如最小外接矩形或质心计算)来确定嘴的中心坐标。 3. **显微镜...
首先,通过计算目标车辆轮廓的外接最小矩形框面积,对车型进行初步判断。接着,利用扩展Kalman滤波器进行车辆的跟踪,统计车辆轮廓在检测区域内的持续帧数,以更精确地确定车型。通过这种方法,可以更准确地识别车辆...