网站首页 > 博客文章 正文
分割图像,提取图像的RGB三原色(Core.split)
一个普通的彩色图像的每个像素点是由RGB三种颜色构成的,那么这种图像就是3通道图像;多通道图像,单独的R色、G色和B色都分别称为一个单通道图像。
OpenCV中的Mat类型可以理解为一种多维多通道的矩阵,如果一个普通的彩色图像读进来后赋值给一个Mat类型的对象M,那么这个M就是一个二维数组,这个二维数组中的每个元素都是一个含有三个RGB值得数据,那这个M就是一个二维三通道的矩阵。
案例代码
package com.what21.opencv01.demo03;
import java.util.List;
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
/**
* 分割图像
*/
public class OpenCVSplitRGB {
static {
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
}
/**
* -Djava.library.path=D:/Apps/MyTool/opencv/build/java/x64
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
Mat src = Imgcodecs.imread("D:/1.jpg");
// 提取图像的RGB三原色(Core.split)
List<Mat> dst = new java.util.ArrayList<Mat>(3);
Core.split(src, dst);
Imgcodecs.imwrite("D:/1_b.jpg", dst.get(0));
Imgcodecs.imwrite("D:/1_g.jpg", dst.get(1));
Imgcodecs.imwrite("D:/1_r.jpg", dst.get(2));
}
}
图像放大缩小,修改图像大小(Imgproc.resize)
修改图像大小,就是改变矩阵的行数,通过插值的方式来改变图像的尺寸。
Imgproc.resize()方法参数:src:输入,原图像,即待改变大小的图像;dst:输出,改变大小之后的图像,这个图像和原图像具有相同的内容,只是大小和原图像不一样而已;dsize:输出图像的大小。如果这个参数不为0,那么就代表将原图像缩放到这个Size(width,height)指定的大小;如果这个参数为0。
案例代码
package com.what21.opencv01.demo03;
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.Size;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
/**
* 修改图像大小
*/
public class OpenCVResize {
static {
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
}
public static void main(String[] args) {
Mat src = Imgcodecs.imread("D:/1.jpg");
Mat dst = src.clone();
// 图片缩小
float scale = 0.5f;
float width = src.width();
float height = src.height();
// 缩小
Imgproc.resize(src, dst, new Size(width * scale, height * scale));
Imgcodecs.imwrite("D:/1-1.jpg", dst);
// 放大
scale = 1.5f;
Imgproc.resize(src, dst, new Size(width * scale, height * scale));
Imgcodecs.imwrite("D:/1-2.jpg", dst);
// 指定尺寸
Imgproc.resize(src, dst, new Size(400, 400));
Imgcodecs.imwrite("D:/1-3.jpg", dst);
}
}
效果:
图像裁剪(Trimming Rect)
Rect矩阵类,成员变量x、y、width、height,分别为左上角点的坐标和矩形的宽和高。
常用的成员函数有:size(): 返回值为一个size;area(): 返回矩形的面积;contains(Point): 用来判断点是否在矩形内;inside(Rect): 函数判断矩形是否在该矩形内;tl(): 返回左上角点坐标;br(): 返回右下角点坐标;
案例代码
package com.what21.opencv01.demo03;
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.Rect;
import org.opencv.imgcodecs.Imgcodecs;
/**
* 图像裁剪(Trimming Rect)
*/
public class OpenCVTrimmingRect {
static {
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
}
/**
* -Djava.library.path=D:/Apps/MyTool/opencv/build/java/x64
*
* @param args
*/
public static void main(String[] args) {
Mat src = Imgcodecs.imread("D:/1.jpg");
System.out.println("width:" + src.cols());
System.out.println("height:" + src.rows());
Rect roi = new Rect(0, 0, 500, 350);
//指定图像格式大小
Mat dst = new Mat(src, roi);
Imgcodecs.imwrite("D:/1_1.jpg", dst);
}
}
效果
猜你喜欢
- 2024-10-02 OpenCV(10)——几何变换之缩放(opencv图像几何变换)
- 2024-10-02 OpenCV:图像旋转与缩放(opencv mat旋转)
- 2024-10-02 讲实话,我会Python之后!我都不屑用PS了!Python抠图太方便了!
- 2024-10-02 [OpenCV实战]51 基于OpenCV实现图像极坐标变换与逆变换
- 2024-10-02 使用opencv实现深度学习的图片与视频的超分辨率
- 2024-10-02 人脸检测-opencv(人脸检测识别)
- 2024-10-02 使用OpenCV和python自动捕捉微笑的自拍(Python完整实现)
- 2024-10-02 如何用Python和OpenCV进行图像识别,实战教程
- 2024-10-02 基于OpenCV对神经网络预处理人脸图像的快速指南
- 2024-10-02 OpenCV实现图像缩放不失真(opencv图像resize)
你 发表评论:
欢迎- 07-08Google Cloud Platform 加入支持 Docker 的容器引擎
- 07-08日本KDDI与Google Cloud 签署合作备忘录,共探AI未来
- 07-08美国Infoblox与Google Cloud合作推出云原生网络和安全解决方案
- 07-08GoogleCloud为Spanner数据库引入HDD层,将冷存储成本降低80%
- 07-08谷歌推出Cloud Dataproc,缩短集群启动时间
- 07-08Infovista与Google Cloud携手推进射频网络规划革新
- 07-08比利时Odoo与Google Cloud建立增强合作,扩大全球影响力
- 07-08BT 和 Google Cloud 通过 Global Fabric 加速 AI 网络
- 最近发表
-
- Google Cloud Platform 加入支持 Docker 的容器引擎
- 日本KDDI与Google Cloud 签署合作备忘录,共探AI未来
- 美国Infoblox与Google Cloud合作推出云原生网络和安全解决方案
- GoogleCloud为Spanner数据库引入HDD层,将冷存储成本降低80%
- 谷歌推出Cloud Dataproc,缩短集群启动时间
- Infovista与Google Cloud携手推进射频网络规划革新
- 比利时Odoo与Google Cloud建立增强合作,扩大全球影响力
- BT 和 Google Cloud 通过 Global Fabric 加速 AI 网络
- NCSA和Google Cloud合作开发AI驱动的网络防御系统,加强泰国网络空间的安全性
- SAP将在沙特阿拉伯 Google Cloud 上推出BTP服务
- 标签列表
-
- ifneq (61)
- 字符串长度在线 (61)
- googlecloud (64)
- messagesource (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)