二、图像处理

待完善

一、图片缩放

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.mzph.cn/news/99283.shtml

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

相关文章

Python —— UI自动化之八大元素定位

1、基础元素定位 1、id定位 使用html中标签的id元素去定位,在一般定位中优先选择,举例: from time import sleep from selenium import webdriver from selenium.webdriver.common.by import Bydriver webdriver.Firefox() driver.get(&q…

MySQ 学习笔记

1.MySQL(老版)基础 开启MySQL服务: net start mysql mysql为安装时的名称 关闭MySQL服务: net stop mysql 注: 需管理员模式下运行Dos命令 . 打开服务窗口命令 services.msc 登录MySQL服务: mysql [-h localhost -P 3306] -u root -p****** Navicat常用快捷键 键动作CTRLG设…

修炼k8s+flink+hdfs+dlink(三:安装dlink)

一:mysql初始化。 mysql -uroot -p123456 create database dinky; grant all privileges on dinky.* to dinky% identified by dinky with grant option; flush privileges;二:上传dinky。 上传至目录/opt/app/dlink tar -zxvf dlink-release-0.7.4.t…

Django REST framework API版本管理【通过GET参数传递】

API版本 在开发过程中可能会有多版本的API,因此需要对API进行管理。django drf中对于版本的管理也很方便。 http://www.example.com/api/v1/info http://www.example.com/api/v2/info 上面这种形式就是很常见的版本管理 在restful规范中,后端的API需…

css记录写一个奇怪的按钮

完成作业的时候发现一个很有意思的按钮&#xff0c;记录一下记录一下 看看界面 可以看出是一个奇形怪状的按钮&#xff0c;而且在按下的时候&#xff0c;图片和文字的颜色会改变 尝试解决 <!DOCTYPE html> <html lang"zh"> <head><meta chars…

利用html2canvas + jspdf将页面内容生成pdf并且下载

依赖安装 npm install html2canvas npm install jspdf函数调用以及实现&#xff08;vue&#xff09; // 引入 import html2canvas from html2canvas import JsPDF from jspdfconst previewEl document.getElementById(targetDom) // 函数调用 this.savePdf(previewEl).then(…

QImage函数setAlphaChannel

最近使用QImage的函数setAlphaChannel时遇到了一个坑&#xff0c;花了不少时间才弄清楚&#xff1a;在使用这个函数后&#xff0c;图像格式都会变成QImage::Format_ARGB32_Premultiplied。 先看下setAlphaChannel在帮助文档的说明&#xff1a; void QImage::setAlphaChannel(…

cartographer-(0)-ubuntu(20.04)-环境安装

1.安装 ROS wiki.ros.org 1.1修改镜像源&#xff1a; 到网站上找与操作系统相匹配的镜像源 ubuntu | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror # 默认注释了源码镜像以提高 apt update 速度&#xff0c;如有需要可自行取消注释 deb htt…

YOLOv7独家改进新颖Neck:RepBiPAN结构升级版,为YOLOv7目标检测打造全新特征融合方式,增强小目标定位精度

💡本篇内容:YOLOv7改进新颖Neck:RepBiPAN 结构升级版,为YOLOv目标检测打造全新特征融合方式,增强小目标定位精度 💡🚀🚀🚀本博客 改进源代码改进 适用于 YOLOv7 按步骤操作运行改进后的代码即可 💡本文提出改进 原创 方式:二次创新,YOLOv7专属 全新 RepBi…

【React-hooks篇幅】自定义hooks

首先得了解自定义 Hooks 跟普通函数区别在于哪里&#xff1f; Hooks 只应该在 React 函数组件内调用&#xff0c;而不应该在普通函数调用。Hooks 能够调用诸如 useState、useEffect、useContext等&#xff0c;普通函数则不能。由此可以通过内置的Hooks等来获得Firber的访问方式…

Linux基础指令大全

Linux基础指令大全 1. ls 指令2. pwd命令3. cd 指令4. touch指令5. mkdir指令6. rmdir指令 && rm 指令7. man指令8.cp指令9. mv指令10. cat 指令11. more指令12. less指令13. head指令14. tail指令15. 时间相关的指令1. **在显示方面&#xff0c;使用者可以设定欲显示的…

node中的crypto模块指南

node中的crypto模块指南 加密操作可能很棘手&#xff0c;以至于付费的加密服务公司的存在只是为了确保在代码库中正确实现加密操作。好消息是&#xff0c;只需学习一些知识&#xff0c;我们就可以使用 Node 的内置加密模块免费进行适当的加密。 在本指南中&#xff0c;我们将…

vcpkg切换 Visual Studio 版本

vcpkg切换 Visual Studio 版本 在使用vcpkg作为项目的包管理工具时&#xff0c;可能会遇到需要切换Visual Studio版本的情况。下面是一种简单的方法来实现这个目标&#xff0c;通过修改triplet文件来指定使用的Visual Studio版本。 步骤1: 创建或修改Triplet文件 首先&#…

2023-2024年华为ICT网络赛道模拟题库

2023-2024年网络赛道模拟题库上线啦&#xff0c;全面覆盖网络&#xff0c;安全&#xff0c;vlan考点&#xff0c;都是带有解析 参赛对象及要求&#xff1a; 参赛对象&#xff1a;现有华为ICT学院及未来有意愿成为华为ICT学院的本科及高职院校在校学生。 参赛要求&#xff1a…

基于共生生物优化的BP神经网络(分类应用) - 附代码

基于共生生物优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于共生生物优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.共生生物优化BP神经网络3.1 BP神经网络参数设置3.2 共生生物算法应用 4.测试结果…

嵌入式养成计划-32-网络编程----域套接字模型------抓包工具--wireshark

六十九、 域套接字模型 69.1 域套接字的概念 只能做一台主机内的进程间通信&#xff0c;协议族&#xff08;地址族&#xff09;指定为&#xff1a;AF_UNIX AF_LOCALbsp-lcd&#xff1a; s类型文件&#xff0c;就是域套接字如果客户端不手动绑定&#xff0c;则操作系统不会创建…

【苍穹外卖 | 项目日记】第一天

前言&#xff1a; 我打算用16天的时间写完黑马程序员的苍穹外卖项目&#xff0c;为了督促自己每天坚持写以及记录项目知识点&#xff0c;所以用这种项目日记的方式鞭策自己 目录 前言&#xff1a; 今日完结任务&#xff1a; 今日收获&#xff1a; 1.阅读代码框架&#xf…

web中缓存的几种方式

看了构建高性能的web站点一书&#xff0c;对其中的集中web缓存进行一个总结 1 应用程序实现的动态页面缓存 应用程序把动态文件生成的html文件缓存到文件服务器&#xff0c;以后用户请求动态文件&#xff0c;直接从文件服务器加载对应的静态缓存的html文件返回给用户&#xff…

运行vite项目报错:await import(‘source-map-support‘).then((r) => r.default.install())

项目场景&#xff1a; Electron vue3 vite项目实现屏幕截图功能 问题描述 运行 npm run dev 启动项目报错 await import(source-map-support).then((r) > r.default.install()) PS D:\study\electron\electronDemo> npm run dev> electronDemo0.0.1 dev D:\study…

Kafka客户端核心参数详解

这一部分主要是从客户端使用的角度来理解 Kakfa 的重要机制。重点依然是要建立自己脑海中的 Kafka 消费模型。Kafka 的 HighLevel API 使用是非常简单的&#xff0c;所以梳理模型时也要尽量简单化&#xff0c;主线清晰&#xff0c;细节慢慢扩展。 一、从基础的客户端说起 Kaf…