使用Java OpenCV库将彩色图像读取为灰度图像。
Imgcodecs类的**imread()**方法接受一个表示文件名字符串值的参数。此方法将指定文件的内容读取到矩阵对象中并返回它。使用此方法,您可以读取图像的内容。
此外,Imgcodecs类还提供了此方法的另一个变体,它接受一个整数作为参数,该整数表示指定所需读取模式的标志。
以下是可作为标志值使用的**Imgcodecs**类的各个字段。
**IMREAD_COLOR** − 如果标志设置为此值,则加载的图像将转换为3通道BGR(蓝绿红)彩色图像。
**IMREAD_GRAYSCALE** − 如果标志设置为此值,则加载的图像将转换为单通道灰度图像。
**IMREAD_LOAD_GDAL** − 如果标志设置为此值,则可以使用GDAL驱动程序加载图像。
**IMREAD_ANYCOLOR** − 如果标志设置为此值,则图像将以任何可能的颜色格式读取。
**IMREAD_REDUCED_COLOR_2 或,
IMREAD_REDUCED_COLOR_4 或,
IMREAD_REDUCED_COLOR_8** − 如果标志设置为此值,则图像将读取为三通道BGR,并且图像大小将相对于所使用的字段缩小到原始图像大小的½、¼或⅛。**IMREAD_REDUCED_GRAYSCALE_2 或,
IMREAD_REDUCED_GRAYSCALE_4 或,
IMREAD_REDUCED_GRAYSCALE_8** − 如果标志设置为此值,则图像将读取为单通道灰度图像,并且图像大小将相对于所使用的字段缩小到原始图像大小的½、¼或⅛。**IMREAD_UNCHANGED** − 如果标志设置为此值,则加载的图像将按原样返回。
因此,如果您需要将彩色图像读取为灰度图像,则应将IMREAD_GRAYSCALE或IMREAD_REDUCED_GRAYSCALE_X作为参数传递。
示例1
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
public class ReadAsGreyScale {
public static void main(String args[]) {
//Loading the OpenCV core library
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
//Reading the Image from the file
Mat matrix = Imgcodecs.imread("D://images//sunset.jpg", Imgcodecs.IMREAD_GRAYSCALE);
//Writing the image
Imgcodecs.imwrite("D://images//sunset_greyscale.jpg", matrix);
System.out.println("Image re-Saved");
}
}输入

输出

示例2
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
public class ReadingAsGrey2 {
public static void main(String args[]) {
//Loading the OpenCV core library
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
String input = "D://images//sunset.jpg";
//Reading the Image from the file
Mat matrix = Imgcodecs.imread(input, Imgcodecs.IMREAD_REDUCED_GRAYSCALE_4 );
//Writing the image
Imgcodecs.imwrite("D://images//sunset_grey_8.jpg", matrix);
System.out.println("Image re-Saved");
}
}输出

数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP