java+opencv4.5.0 实现获取照片所有红色区域
时间: 2024-05-09 15:15:04 浏览: 86
实现这个功能,需要使用Java与OpenCV库进行图像处理。下面是一个简单的代码示例,可以帮助你获取照片中所有红色区域:
```java
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.Scalar;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
public class ImageProcessing {
public static void main(String[] args) {
// 加载OpenCV库
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
// 加载图片
Mat image = Imgcodecs.imread("image.jpg");
// 转换图片格式为HSV
Mat hsvImage = new Mat();
Imgproc.cvtColor(image, hsvImage, Imgproc.COLOR_BGR2HSV);
// 定义红色区域的HSV范围
Scalar lowerRed = new Scalar(0, 70, 50);
Scalar upperRed = new Scalar(10, 255, 255);
Scalar lowerRed2 = new Scalar(170, 70, 50);
Scalar upperRed2 = new Scalar(180, 255, 255);
// 提取红色区域
Mat redMask = new Mat();
Core.inRange(hsvImage, lowerRed, upperRed, redMask);
Mat redMask2 = new Mat();
Core.inRange(hsvImage, lowerRed2, upperRed2, redMask2);
Core.bitwise_or(redMask, redMask2, redMask);
// 显示图片
Mat result = new Mat();
Core.bitwise_and(image, image, result, redMask);
Imgcodecs.imwrite("result.jpg", result);
}
}
```
这个代码会将图片中所有红色区域提取出来,并保存到 result.jpg 文件中。你可以根据自己的需要调整红色区域的HSV范围,以达到更好的效果。
阅读全文