Java OpenCV数字图像处理——颜色反转

Java OpenCV数字图像处理——颜色反转本文介绍了使用 OpenCV 库在 Java 中进行灰度图像和彩色图像颜色反转的方法 包括从彩色图片转换为灰度并进行全局颜色反转 以及直接对彩色图片进行颜色倒置的操作

大家好,欢迎来到IT知识分享网。

【OpenCV】颜色反转

颜色反转为两种:1、灰度图像颜色反转;2、彩色图像颜色反转

1、灰度图像颜色反转

package com.zhou.opencv.example; import com.zhou.opencv.example.common.ListDisplayPanel; import com.zhou.opencv.example.utils.BufferImageUtil; import com.zhou.opencv.example.utils.ShowImages; import org.opencv.core.Core; import org.opencv.core.CvType; import org.opencv.core.Mat; import org.opencv.core.Scalar; import org.opencv.imgcodecs.Imgcodecs; import org.opencv.imgproc.Imgproc; import java.io.IOException; / * 颜色反转 */ public class OpencvGrayInvImage { 
    private static final String imagePath = "image/cat.jpg"; public static void main(String[] args) throws Exception { 
    //取消热部署,防止opencv加载报错,没有热部署可忽略 System.setProperty("spring.devtools.restart.enabled", "false"); //加载绝对路径下的dll System.load("E:\\workspace\\opencv\\lib\\opencv_java455.dll"); grayInvImage(imagePath); } / * 灰度反转 * * @param filePath * @throws IOException */ public static void grayInvImage(String filePath) throws IOException { 
    ListDisplayPanel gui = new ListDisplayPanel(); Mat src = Imgcodecs.imread(filePath, Imgcodecs.IMREAD_COLOR); gui.addImage("原图", BufferImageUtil.mat2BufferedImage(src)); //检测图像是否加载成功 if (src.empty()) { 
    System.out.println("not find the image"); return; } //灰度;三通道RGB转为单通道全局灰度 Mat gray = new Mat(src.size(), CvType.CV_8UC1); Imgproc.cvtColor(src, gray, Imgproc.COLOR_BGR2GRAY); gui.addImage("灰度", BufferImageUtil.mat2BufferedImage(gray)); Mat dst = grayInverted(gray); gui.addImage("灰度反转", BufferImageUtil.mat2BufferedImage(dst)); ShowImages.showWindow(gui, "颜色反转", true); } / * 灰度反转 * * @param src */ public static Mat grayInverted(Mat src) { 
    Mat dst = new Mat(src.size(), CvType.CV_8UC1); dst.setTo(new Scalar(255)); for (int row = 0; row < src.rows(); row++) { 
    for (int col = 0; col < src.cols(); col++) { 
    double[] colors = src.get(row, col); dst.put(row, col, 255 - colors[0]); } } return dst; } } 

在这里插入图片描述

2、彩色图片颜色反转

package com.zhou.opencv.example; import com.zhou.opencv.example.common.ListDisplayPanel; import com.zhou.opencv.example.utils.BufferImageUtil; import com.zhou.opencv.example.utils.ShowImages; import org.opencv.core.Core; import org.opencv.core.CvType; import org.opencv.core.Mat; import org.opencv.core.Scalar; import org.opencv.imgcodecs.Imgcodecs; import org.opencv.imgproc.Imgproc; import java.io.IOException; / * 颜色反转 */ public class OpencvGrayInvImage { 
    private static final String imagePath = "image/cat.jpg"; public static void main(String[] args) throws Exception { 
    //取消热部署,防止opencv加载报错,没有热部署可忽略 System.setProperty("spring.devtools.restart.enabled", "false"); //加载绝对路径下的dll System.load("E:\\workspace\\opencv\\lib\\opencv_java455.dll"); grayInvImage(imagePath); } / * 彩色反转 * * @param filePath * @throws IOException */ public static void grayInvImage(String filePath) throws IOException { 
    ListDisplayPanel gui = new ListDisplayPanel(); Mat src = Imgcodecs.imread(filePath, Imgcodecs.IMREAD_COLOR); gui.addImage("原图", BufferImageUtil.mat2BufferedImage(src)); //检测图像是否加载成功 if (src.empty()) { 
    System.out.println("not find the image"); return; } //彩色反转 Mat grayInverted = new Mat(src.size(), CvType.CV_8UC3); Core.bitwise_not(src, grayInverted); gui.addImage("彩色反转", BufferImageUtil.mat2BufferedImage(grayInverted)); ShowImages.showWindow(gui, "颜色反转", true); } } 

在这里插入图片描述

代码地址:Java-opencv

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/158816.html

(0)
上一篇 2025-01-17 19:33
下一篇 2025-01-17 19:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信