二、图像处理

待完善

一、图片缩放

import org.bytedeco.opencv.global.opencv_imgcodecs;
import org.bytedeco.opencv.global.opencv_imgproc;
import org.bytedeco.opencv.opencv_core.Mat;
import org.bytedeco.opencv.opencv_core.Size;public class ImageResizer {public static void main(String[] args) {// 加载图片Mat image = opencv_imgcodecs.imread("E://app/images/222.jpg");// 创建MatMat resizedImage = new Mat();// 设置缩放大小Size size = new Size(100, 100);// 缩放图片, 参数分别是 原图片、新创建的mat、缩放大小opencv_imgproc.resize(image, resizedImage, size);// 写图片opencv_imgcodecs.imwrite("E://app/images/resized.jpg", resizedImage);}
}

二、图片旋转

import org.bytedeco.opencv.global.opencv_imgcodecs;
import org.bytedeco.opencv.global.opencv_imgproc;
import org.bytedeco.opencv.opencv_core.Mat;
import org.bytedeco.opencv.opencv_core.Point2f;public class ImageResizer {public static void main(String[] args) {// 加载图片Mat image = opencv_imgcodecs.imread("E://app/images/222.jpg");Mat rotatedImage = new Mat();double angle = 90.0;// 获取图片中心点Point2f center = new Point2f(image.cols() / 2, image.rows() / 2);// 三个参数: 中心点,旋转角度, 图片比例Mat rotationMatrix = opencv_imgproc.getRotationMatrix2D(center, angle, 1.0);// 旋转opencv_imgproc.warpAffine(image, rotatedImage, rotationMatrix, image.size());// 写图片opencv_imgcodecs.imwrite("E://app/images/rotated3.jpg", rotatedImage);}
}

三、边缘检测

import org.bytedeco.opencv.global.opencv_imgcodecs;
import org.bytedeco.opencv.global.opencv_imgproc;
import org.bytedeco.opencv.opencv_core.Mat;public class ImageResizer {public static void main(String[] args) {// 加载图片Mat image = opencv_imgcodecs.imread("E://app/images/222.jpg");Mat grayImage = new Mat();Mat cannyImage = new Mat();// 灰度设置opencv_imgproc.cvtColor(image, grayImage, opencv_imgproc.COLOR_BGR2GRAY);// 边缘检测opencv_imgproc.Canny(grayImage, cannyImage, 100, 200);opencv_imgcodecs.imwrite("E://app/images/edges.jpg", grayImage);opencv_imgcodecs.imwrite("E://app/images/edges33.jpg", cannyImage);}
}

在这里插入图片描述

四、图像腐蚀

import org.bytedeco.opencv.global.opencv_imgcodecs;
import org.bytedeco.opencv.global.opencv_imgproc;
import org.bytedeco.opencv.opencv_core.Mat;
import org.bytedeco.opencv.opencv_core.Size;public class ImageResizer {public static void main(String[] args) {// 加载图片Mat image = opencv_imgcodecs.imread("E://app/images/222.jpg");Mat grayImage = new Mat();// 腐蚀程度Mat element = opencv_imgproc.getStructuringElement(opencv_imgproc.MORPH_RECT, new Size(15, 15));// 腐蚀opencv_imgproc.erode(image, grayImage, element);opencv_imgcodecs.imwrite("E://app/images/eroded.jpg", grayImage);}
}

在这里插入图片描述

五、图像膨胀

import org.bytedeco.javacv.Java2DFrameConverter;
import org.bytedeco.javacv.OpenCVFrameConverter;
import org.bytedeco.opencv.global.opencv_imgproc;
import org.bytedeco.opencv.opencv_core.Mat;
import org.bytedeco.opencv.opencv_core.Size;import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;public class ImageResizer {public static void main(String[] args) {try {// 加载图像BufferedImage img = ImageIO.read(new File("E://app/images/222.jpg"));Java2DFrameConverter java2DFrameConverter = new Java2DFrameConverter();Mat inputMat = new OpenCVFrameConverter.ToMat().convert(java2DFrameConverter.convert(img));// 定义核Mat kernel = opencv_imgproc.getStructuringElement(opencv_imgproc.MORPH_RECT, new Size(15, 15));// 膨胀操作Mat outputMat = new Mat();opencv_imgproc.dilate(inputMat, outputMat, kernel);// 保存图像Java2DFrameConverter java2DFrameConverterOutput = new Java2DFrameConverter();BufferedImage outputImg = java2DFrameConverterOutput.convert(new OpenCVFrameConverter.ToMat().convert(outputMat));ImageIO.write(outputImg, "png", new File("E://app/images/output.png"));} catch (IOException e) {e.printStackTrace();}}
}

六、裁剪图片

public class ImageResizer {public static void main(String[] args) {// 读取图像Mat src = opencv_imgcodecs.imread("E://app/images/111.jpg");// 定义矩形区域Rect roi = new Rect(200, 100, 500, 500);Rect roi2 = new Rect(100, 100, 500, 500);// 裁剪图像Mat cropped = new Mat(src, roi);Mat cropped2 = new Mat(src, roi2);// 保存图像opencv_imgcodecs.imwrite("E://app/images/output444.png", cropped);opencv_imgcodecs.imwrite("E://app/images/output555.png", cropped2);}
}

在这里插入图片描述

七、翻转图像

import org.bytedeco.opencv.global.opencv_core;
import org.bytedeco.opencv.global.opencv_imgcodecs;
import org.bytedeco.opencv.opencv_core.Mat;public class ImageResizer {public static void main(String[] args) {// 读取图像Mat src = opencv_imgcodecs.imread("E://app/images/222.jpg");// 翻转图像Mat dst = new Mat();opencv_core.flip(src, dst, 1);opencv_imgcodecs.imwrite("E://app/images/output555.png", dst);}
}

在这里插入图片描述

八、添加文字

import org.bytedeco.opencv.global.opencv_imgcodecs;
import org.bytedeco.opencv.global.opencv_imgproc;
import org.bytedeco.opencv.opencv_core.Mat;
import org.bytedeco.opencv.opencv_core.Point;
import org.bytedeco.opencv.opencv_core.Scalar;import static org.bytedeco.opencv.global.opencv_imgproc.FONT_HERSHEY_DUPLEX;public class ImageResizer {public static void main(String[] args) {// 读取图像Mat image1 = opencv_imgcodecs.imread("E://app/images/111.jpg");// 设置文字内容和位置String text = "Hello, World!";Point textOrg = new Point(50, 50);// 在图像上添加文字//img – 显示文字所在图像.//text – 待显示的文字.//org – 文字在图像中的左下角 坐标.// fontFace – 字体类型, 可选择字体:FONT_HERSHEY_SIMPLEX, FONT_HERSHEY_PLAIN, FONT_HERSHEY_DUPLEX,FONT_HERSHEY_COMPLEX, FONT_HERSHEY_TRIPLEX, FONT_HERSHEY_COMPLEX_SMALL, FONT_HERSHEY_SCRIPT_SIMPLEX, orFONT_HERSHEY_SCRIPT_COMPLEX,以上所有类型都可以配合 FONT_HERSHEY_ITALIC使用,产生斜体效果。//fontScale – 字体大小,该值和字体内置大小相乘得到字体大小//color – 文本颜色(默认颜色存储通道为BGR)//thickness – 写字的线的粗细,类似于0.38的笔尖和0.5的笔尖// lineType – 线性.// booopencv_imgproc.putText(image1, text, textOrg, FONT_HERSHEY_DUPLEX, 2.0, new Scalar(250), 1,8, false);// 保存带有文字的图像opencv_imgcodecs.imwrite("E://app/images/output.png", image1);}
}

九、添加水印

import org.bytedeco.opencv.global.opencv_core;
import org.bytedeco.opencv.global.opencv_imgcodecs;
import org.bytedeco.opencv.global.opencv_imgproc;
import org.bytedeco.opencv.opencv_core.Mat;
import org.bytedeco.opencv.opencv_core.Size;public class ImageResizer {public static void main(String[] args) {// 读取图像Mat image = opencv_imgcodecs.imread("E://app/images/111.jpg");// 读取水印图像Mat watermark = opencv_imgcodecs.imread("E://app/images/666.jpg");Size size = new Size(1000, 1000);// 两张图片大小必须一致Mat resizedImage = new Mat();Mat waterResizedImage = new Mat();opencv_imgproc.resize(image, resizedImage, size);opencv_imgproc.resize(watermark, waterResizedImage, size);// 将水印图像复制到原始图像上Mat image_with_watermark = new Mat();opencv_core.addWeighted(resizedImage, 0.7, waterResizedImage, 0.3, 0, image_with_watermark);// 保存带有文字的图像opencv_imgcodecs.imwrite("E://app/images/output.png", image_with_watermark);}
}

十、模糊

import org.bytedeco.opencv.global.opencv_core;
import org.bytedeco.opencv.global.opencv_imgcodecs;
import org.bytedeco.opencv.global.opencv_imgproc;
import org.bytedeco.opencv.opencv_core.Mat;
import org.bytedeco.opencv.opencv_core.Size;public class ImageResizer {public static void main(String[] args) {// 读取图像Mat image = opencv_imgcodecs.imread("E://app/images/222.jpg");Mat dst = new Mat();opencv_imgproc.GaussianBlur(image, dst, new Size(15, 15), 0, 0, opencv_core.BORDER_DEFAULT);// 保存带有文字的图像opencv_imgcodecs.imwrite("E://app/images/output.jpg", dst);}
}

十一、锐化

import org.bytedeco.opencv.global.opencv_core;
import org.bytedeco.opencv.global.opencv_imgcodecs;
import org.bytedeco.opencv.global.opencv_imgproc;
import org.bytedeco.opencv.opencv_core.Mat;
import org.bytedeco.opencv.opencv_core.Size;public class ImageResizer {public static void main(String[] args) {// 读取图像Mat image = opencv_imgcodecs.imread("E://app/images/222.jpg");Mat dst = new Mat();Mat sharpen = new Mat();opencv_imgproc.GaussianBlur(image, sharpen, new Size(0, 0), 3);opencv_core.addWeighted(image, 1.5, sharpen, -0.5, 0, dst);// 保存带有文字的图像opencv_imgcodecs.imwrite("E://app/images/output.jpg", dst);}
}

十二、颜色

import org.bytedeco.opencv.global.opencv_imgcodecs;
import org.bytedeco.opencv.global.opencv_imgproc;
import org.bytedeco.opencv.opencv_core.Mat;public class ImageResizer {public static void main(String[] args) {// 读取图像Mat image = opencv_imgcodecs.imread("E://app/images/222.jpg");Mat dst = new Mat();opencv_imgproc.cvtColor(image, dst, opencv_imgproc.COLOR_RGB2XYZ);// 保存带有文字的图像opencv_imgcodecs.imwrite("E://app/images/output.jpg", dst);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/152759.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于SVM+TensorFlow+Django的酒店评论打分智能推荐系统——机器学习算法应用(含python工程源码)+数据集+模型(一)

目录 前言总体设计系统整体结构图系统流程图 运行环境Python环境TensorFlow 环境方法一方法二 安装其他模块安装MySQL 数据库 模块实现1. 数据预处理1)数据整合2)文本清洗3)文本分词 相关其它博客工程源代码下载其它资料下载 前言 本项目以支…

剑指offer——JZ68 二叉搜索树的最近公共祖先 解题思路与具体代码【C++】

一、题目描述与要求 二叉搜索树的最近公共祖先_牛客题霸_牛客网 (nowcoder.com) 题目描述 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 1.对于该题的最近的公共祖先定义:对于有根树T的两个节点p、q,最近公共祖先LCA(T,p,q)表示一个节点x&#…

阿里云轻量应用服务器月流量限制说明(部分套餐不限流量)

阿里云轻量应用服务器部分套餐限制月流量,轻量应用服务器按照套餐售卖,有的套餐限制月流量,有的不限制流量。像阿里云轻量2核2G3M带宽轻量服务器一年108元和轻量2核4G4M带宽一年297.98元12个月,这两款是不限制月流量的。阿里云百科…

充电保护芯片TP4054国产替代完全兼容DP4054DP4054H 锂电充电芯片

■产品概述 DP4054H是-款完整的采用恒定电流/恒定电压单节锂离子电池充电管理芯片。其SOT小封装和较少的外部元件数目使其成为便携式应用的理想器件,DP4054H可 以适合USB电源和适配器电源工作。 由于采用了内部PMOSFET架构,加上防倒充电路,所以不需要外…

c++桥接模式,中介者模式应用实现状态跳转

上图为例,按上述两种方式实现的模式跳转,如果在原先的三种模式之间再增加多一种模式,就会引起每个模式都会要求改变,并且逻辑混乱,因此更改模式为桥接中介者访问,将抽象和实现分离,实现之间采用…

Flink---11、状态管理(按键分区状态(值状态、列表状态、Map状态、归约状态、聚合状态)算子状态(列表状态、广播状态))

星光下的赶路人star的个人主页 这世上唯一扛得住岁月摧残的就是才华 文章目录 1、状态管理1.1 Flink中的状态1.1.1 概述1.1.2 状态的分类 1.2 按键分区状态(Keyed State)1.2.1 值状态(ValueState)1.2.2 列表状态(ListS…

三十一、【进阶】B+树的演变过程

1、B树简单介绍 (1)介绍:B树也属于B树,是B树的变种 (2)特点:所有的数据都位于叶子节点上,叶子节点上的所有元素形成了一个单项链表 (3)图示: 2…

【虚拟机】根据已有IP获取当前网段的主机范围

虚拟机有的时候会需要自己手动分配IP,此时无论是和宿主主机通信、还是访问外网,都需要保证和宿主主机在一个网段。现在已知宿主主机的 IP 和子网掩码,需要知道宿主主机所处网段可以分配哪些IP。 假设宿主主机 IP 为172.20.10.2,子…

3.1.OpenCV技能树--二值图像处理--阈值

文章目录 1.文章内容来源2.阈值分割2.1.简单阈值分割2.1.1.简单阈值分割原理介绍2.1.2.简单阈值分割核心代码2.1.3.简单阈值分割效果展示 2.2.自适应阈值分割2.2.1.自适应阈值分割原理介绍2.2.2.自适应阈值分割核心代码2.2.3.自适应阈值分割效果展示 2.3.Otsu’s二值化/大津阈值…

unity使用UniStorm 5.1.0.unitypackage增加天气

添加天天气组件unistorm 然后添加一个player 导入包会报错,需要修改代码 using UnityEngine; using UnityEngine.PostProcessing;namespace UnityEditor.PostProcessing {[CustomPropertyDrawer(typeof(UnityEngine.PostProcessing.MinAttribute))]sealed class MinDrawer : …

Transformer预测 | Python实现基于Transformer的股票价格预测(tensorflow)

文章目录 效果一览文章概述程序设计参考资料效果一览 文章概述 Transformer预测 | Python实现基于Transformer的股票价格预测(tensorflow) 程序设计 import numpy as np import matplotlib.pyplot

【多线程案例】设计模式-单例模式

1.单例模式 什么是单例模式? 所谓单例,即单个实例。通过编码技巧约定某个类只能有唯一一个实例对象,并且提前在类里面创建好一个实例对象,把构造方法私有化,再对外提供获取这个实例对象的方法,&#xff0…

lua 中文字符的判断简介

一般在工作中会遇到中文字符的判断、截断、打码等需求,之前一直没有总结,虽然网上资料也多,今天在这里简单的总结一下。 1 .UTF-8简单描述 UTF-8 是 Unicode 的实现方式之一,其对应关系(编码规则)如下表所…

九大高效的前端测试工具与框架

前言: 在每个Web应用程序中,作为用户直接可见的应用程序外观,“前端”包括:图形化的用户界面、相应的功能、及其整体站点的可用性。我们可以毫不夸张地说:如果前端无法正常工作,您将无法“拉新”网站的潜在…

OpenCV4(C++)—— 仿射变换、透射变换和极坐标变换

文章目录 一、仿射变换1. getRotationMatrix2D()2. warpAffine() 二、透射变换三、极坐标变换 一、仿射变换 在OpenCV中没有专门用于图像旋转的函数,而是通过图像的仿射变换实现图像的旋转。实现图像的旋转首先需要确定旋转角度和旋转中心,之后确定旋转…

js高级(代理,浅拷贝深拷贝,节流和防抖,闭包.hasOwnProperty)

1.代理 1.问题:如何定义一个对象,不会被修改,也不能被遍历? 通过Object.defineProperty(对象,属性名,option)定义默认属性 无法被修改无法被删除无法被遍历 注意:Object.Property传入的值与返回的值是同一个地址 可以配置一下属性 value:初始值writable:true (true允许被修改…

MM-Camera架构-Preview 流程分析

目录 文章目录 1 log开的好,问题都能搞2 lib3 preview3.1 打开视频流3.1.1 cpp\_module\_start\_session3.1.2 cpp\_thread\_create3.1.3 cpp\_thread\_funcsundp-3.1 cpp\_hardware\_open\_subdev(ctrl->cpphw)sundp-3.2 cpp\_hardware\_process\_command(ctrl-…

JIRA 如何在项目之间移动 Issue

需要使用 JIRA 的查找功能。 把需要移动的 Issue 先全部找到,然后选择 Tools 下面的所有 Issues 批量操作页面 在随后的页面中,将会出现批量操作的页面。 在这里,可以对需要进行批量操作的问题,进行全部选择。 然后单击下一步继…

RunnerGo亮相QECon大会上海站,来看看这款全栈测试平台

QECon(Quality Efficiency Conference)质量效能大会在上海正式开幕!本次大会以"数生智慧:高质量发展新引擎"为主题,深入探讨如何借助数字化和智能化技术推动软件质量的发展,为高质量经济发展提供…

分类预测 | MATLAB实现KOA-CNN-BiLSTM开普勒算法优化卷积双向长短期记忆神经网络数据分类预测

分类预测 | MATLAB实现KOA-CNN-BiLSTM开普勒算法优化卷积双向长短期记忆神经网络数据分类预测 目录 分类预测 | MATLAB实现KOA-CNN-BiLSTM开普勒算法优化卷积双向长短期记忆神经网络数据分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.MATLAB实现KOA-CNN-BiLST…