【OpenCV】 Mat内信息改变

本文详细介绍了使用OpenCV库在Java环境下如何改变图像像素信息,包括转换图像精度为浮点类型,以及通过循环遍历修改RGB或灰度图像的每个像素点颜色值,实现图像反转效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

改变Mat内像素点的信息

1. 转换图像的精度值→浮点类型(日后高斯定理计算,若超出原来范围则需要变化)

         Mat dst = new Mat(src.size(), CvType.CV_32FC1);
         src.convertTo(dst, CvType.CV_32F);

 

 

2. 循环改变图像像素点的信息,主要代码:

 

byte[] data = new byte[channels*width*height];
         src.get(0, 0, data);
         int r = 0,g = 0,b = 0;
         int gray = 0;
         for(int row = 0;row < height;row++) {
        	 for(int col = 0;col < width;col++) {
        		 if(channels == 3) {
        			 b = data[row*channels*width + col*channels]&0xff;
        			 g = data[row*channels*width + col*channels+1]&0xff;
        			 r = data[row*channels*width + col*channels+2]&0xff;
        			 
        			 //修改
        			 b = 255 - b;
        			 g = 255 - g;
        			 r = 255 - r;
        			 
        			 data[row*channels*width + col*channels] = (byte)b;
        			 data[row*channels*width + col*channels+1] = (byte)g;
        			 data[row*channels*width + col*channels+2] = (byte)r;
        		 }else {
        			 gray = data[row*channels*width + col*channels]&0xff;
        			 gray = 255 - gray;
        			 data[row*channels*width + col*channels] = (byte)gray;
        		 }
        	 }
         }
         src.put(0, 0, data);
         Imgcodecs.imwrite("D:\\openCV_picture\\lena_changed.jpg", src);
*主要方法
src.get(int row, int col, byte[] data);
src.put(int row, int col, byte[] data);

关于&0xff的解释,参考大佬:点此查看

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值