【Java Opencv系列】5.1彩色图像转灰度
来源:互联网 发布:淘宝网官网登录 编辑:程序博客网 时间:2024/06/01 10:10
5.1彩色图像转灰度图
本节内容代码下载链接:http://download.csdn.net/detail/u012343179/9801552
Gray = R*0.299 + G*0.587 + B*0.114
在testOpencv项目下创建imageBasicProcess包,包下新建RgbtoGRayTest.java窗体应用和MyRgbtoGray.java类。
RgbtoGrayTest.java代码如下:
package imageBasicProcess;import java.awt.EventQueue;import javax.swing.JFrame;import javax.swing.JLabel;import org.opencv.core.Core;import org.opencv.core.Mat;import org.opencv.imgcodecs.Imgcodecs;import org.opencv.imgproc.Imgproc;import tool.mat2BufferedImage;import java.awt.BorderLayout;import javax.swing.ImageIcon;import javax.swing.JButton;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;public class RgbtoGrayTest {static{System.loadLibrary(Core.NATIVE_LIBRARY_NAME);}private JFrame frame;Mat mrgb;/** * Launch the application. */public static void main(String[] args) {EventQueue.invokeLater(new Runnable() {public void run() {try {RgbtoGrayTest window = new RgbtoGrayTest();window.frame.setVisible(true);} catch (Exception e) {e.printStackTrace();}}});}/** * Create the application. */public RgbtoGrayTest() {initialize();}/** * Initialize the contents of the frame. */private void initialize() {frame = new JFrame();frame.setBounds(0, 0, 800, 600);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.getContentPane().setLayout(null);JLabel lbl = new JLabel("New label");lbl.setBounds(0, 50, 500, 400);frame.getContentPane().add(lbl);JButton btn = new JButton("\u7070\u5EA6\u5316");btn.addMouseListener(new MouseAdapter() {@Overridepublic void mouseClicked(MouseEvent arg0) {Mat mgray=new Mat(mrgb.rows(),mrgb.cols(),mrgb.type());Imgproc.cvtColor(mrgb, mgray, Imgproc.COLOR_RGB2GRAY);//Opencv中彩色转灰度的函数//mgray=MyRgbtoGray.rgbToGray(mrgb);lbl.setIcon(new ImageIcon(mat2BufferedImage.matToBufferedImage(mgray)));}});btn.setBounds(0, 0, 100, 30);frame.getContentPane().add(btn);//我们的操作mrgb=Imgcodecs.imread("F://lena.jpg",Imgcodecs.CV_LOAD_IMAGE_COLOR);lbl.setIcon(new ImageIcon(mat2BufferedImage.matToBufferedImage(mrgb)));}}
运行结果:
原图:
点击按钮后:(灰度)
本节中最为重要的就是:
Imgproc.cvtColor(mrgb,mgray, Imgproc.COLOR_RGB2GRAY);//Opencv中彩色转灰度的函数
下面我们自己编码实现该效果:
MyRgbtoGray.java的代码如下:
package imageBasicProcess;import org.opencv.core.CvType;import org.opencv.core.Mat;public class MyRgbtoGray {public static Mat rgbToGray(Mat mrgb){Mat mgray=new Mat(mrgb.rows(),mrgb.cols(),CvType.CV_8UC1);//一样大小的灰度图for(int i=0;i<mrgb.rows();i++){for(int j=0;j<mrgb.cols();j++){double[] value=mrgb.get(i, j);//BGR顺序double valueGray=0.114*value[0]+0.587*value[1]+0.299*value[2];//转换公式mgray.put(i, j, valueGray);}}return mgray;}}
效果与opencv中的一致。
CommissarMa 2017年4月1日16:54:26
0 0
- 【Java Opencv系列】5.1彩色图像转灰度
- OpenCV彩色图像转灰度图
- 【Android】使用OpenCV彩色图像转灰度图像
- opencv彩色图像(RGB)转灰度图像及其优化
- JAVA实现彩色图像转灰度
- openCV彩色图像转换为灰度图像
- opencv彩色图像与灰度图像叠加
- 彩色图像转灰度图像
- 彩色图像转灰度图
- 灰度图像转伪彩色
- 灰度图像转彩色图像 gray2rgb
- pytorch 彩色图像转灰度图像
- 彩色图像->灰度图像:
- 灰度图像彩色图像
- 利用opencv从本地获取图像,并进行图像缩放,彩色图转灰度图
- Opencv: 彩色图像转成灰度图像并保存
- OpenCV——彩色图像转成灰度图像
- OpenCV遍历彩色图像、灰度图像的像素值方法
- 自动化基础课程——工艺
- 朴素贝叶斯分类算法理解及文本分类器实现
- Jmeter使用_time函数实现同一个接口参数传入可以每次传入不同的参数
- css3
- D
- 【Java Opencv系列】5.1彩色图像转灰度
- 03.控制器
- PHP内核探索之变量(1)Zval
- 不能将类型为‘std::string&’的非 const 引用初始化为类型为‘const char*’的临时变量
- 脚本实现获取cloudstack中资源和一些状态信息以html报表显示
- linux 服务器间文件同步的简单实现
- 你也可以做数据存储专家,RAID就是这么简单!
- Javolution大小端数据转换处理简介(java)
- 使用eclipse开发Android,项目出现小红叉,找不到R文件解决办法