网站基础开发成本/网络推广平台几大类

网站基础开发成本,网络推广平台几大类,机械设计网站推荐,WordPress阿里云超标这里我们先修改一下依赖&#xff0c;不用JavaCV&#xff0c;用openCV。 导入依赖&#xff1a; <!-- JavaCV 依赖&#xff0c;用于图像和视频处理 --> <!-- <dependency>--> <!-- <groupId>org.bytedeco</groupId>--> &l…

这里我们先修改一下依赖,不用JavaCV,用openCV。

导入依赖:

        <!-- JavaCV 依赖,用于图像和视频处理 -->
<!--        <dependency>-->
<!--            <groupId>org.bytedeco</groupId>-->
<!--            <artifactId>javacv</artifactId>-->
<!--            <version>1.5.10</version>-->
<!--        </dependency>-->
<!--        <dependency>-->
<!--            <groupId>org.bytedeco</groupId>-->
<!--            <artifactId>javacpp</artifactId>-->
<!--            <version>1.5.10</version>-->
<!--        </dependency>--><!-- OpenCV,计算机视觉库 --><dependency><groupId>org.openpnp</groupId><artifactId>opencv</artifactId><version>4.6.0-0</version><scope>system</scope><systemPath>${project.basedir}/lib/opencv-460.jar</systemPath></dependency>

编写图像处理配置类,包括图像拉取,图像处理、图像上传三个部分:

package com.llpp.tool;import cn.hutool.http.ContentType;
import cn.hutool.http.HttpUtil;
import com.llpp.config.MinioConfig;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
import org.opencv.core.Size;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.CLAHE;
import org.opencv.imgproc.Imgproc;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.ClassUtils;
import org.springframework.web.multipart.MultipartFile;import javax.annotation.PostConstruct;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Objects;
import java.util.UUID;/*** @Author 21326* @Date 2025 2025/2/28 23:50*/
@Component
public class ImageOperationTool {@Autowiredprivate MinioConfig minioConfig;public static ImageOperationTool imageOperationTool;private static String PATH = ClassUtils.getDefaultClassLoader().getResource("openCV/opencv_java460.dll").getPath();static {System.load(PATH);}@PostConstructpublic void init() {imageOperationTool = this;imageOperationTool.minioConfig = this.minioConfig;}public static String imageOperation(String url, String operation) {File output = new File("processed_image.jpg");FileInputStream fis = null;try {// 从 URL 读取图像数据output = HttpUtil.downloadFileFromUrl(url, output);// 将图像数据转换为 OpenCV 的 Mat 对象Mat mat = Imgcodecs.imread(output.getAbsolutePath());// 根据操作类型执行相应的操作Mat processedMat = performOperation(mat, operation);// 将处理后的 Mat 对象保存为文件Imgcodecs.imwrite(output.getAbsolutePath(), processedMat);// 将文件转换为 MultipartFile 对象fis = new FileInputStream(output);MultipartFile multipartFile = new MultipartFileTool(UUID.randomUUID().toString(), "image/jpg", ContentType.OCTET_STREAM.getValue(), fis);// 上传到 MinIOreturn imageOperationTool.minioConfig.putObject(multipartFile);} catch (Exception e) {System.out.println(e.getMessage());} finally {try {if (Objects.nonNull(fis)) fis.close();} catch (IOException e) {throw new RuntimeException(e);}output.delete();}return null;}private static Mat performOperation(Mat mat, String operation) {switch (operation.toLowerCase()) {case "gray": {// 灰度化Mat grayMat = new Mat();Imgproc.cvtColor(mat, grayMat, Imgproc.COLOR_BGR2GRAY);return grayMat;}case "scale": {// 缩放Mat scaledMat = new Mat();Imgproc.resize(mat, scaledMat, new Size(mat.width() / 2, mat.height() / 2));return scaledMat;}case "gaussianblur": {// 高斯滤波Mat gaussianMat = new Mat();Imgproc.GaussianBlur(mat, gaussianMat, new Size(3, 3), 0);return gaussianMat;}case "canny": {// 边缘检测Mat cannyMat = new Mat();Imgproc.Canny(mat, cannyMat, 100, 200);return cannyMat;}case "houghlines": {// 霍夫直线变换Mat lines = new Mat();Imgproc.HoughLines(mat, lines, 1, Math.PI / 180, 100, 0, 0, 0, Math.PI);Mat resultMat = new Mat(lines.rows(), 2, CvType.CV_32F);for (int i = 0; i < lines.rows(); i++) {double[] line = lines.get(i, 0);resultMat.put(i, 0, line[0]);resultMat.put(i, 1, line[1]);}return resultMat;}case "sobel": {// Sobel边缘检测Mat sobelMat = new Mat();Imgproc.Sobel(mat, sobelMat, CvType.CV_8U, 1, 0);return sobelMat;}case "laplacian": {Mat laplacianMat = new Mat();Imgproc.Laplacian(mat, laplacianMat, CvType.CV_8U);return laplacianMat;}case "erode": {Mat erodeMat = new Mat();Mat kernel = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(3, 3));Imgproc.erode(mat, erodeMat, kernel);return erodeMat;}case "dilate": {Mat dilateMat = new Mat();Mat kernel = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(3, 3));Imgproc.dilate(mat, dilateMat, kernel);return dilateMat;}case "medianblur": {Mat medianBlurMat = new Mat();Imgproc.medianBlur(mat, medianBlurMat, 3);return medianBlurMat;}case "bilateralfilter": {Mat bilateralFilterMat = new Mat();Imgproc.bilateralFilter(mat, bilateralFilterMat, 9, 75, 75);return bilateralFilterMat;}case "threshold": {Mat thresholdMat = new Mat();Imgproc.threshold(mat, thresholdMat, 127, 255, Imgproc.THRESH_BINARY);return thresholdMat;}case "adaptivethreshold": {Mat adaptiveThresholdMat = new Mat();Imgproc.adaptiveThreshold(mat, adaptiveThresholdMat, 255, Imgproc.ADAPTIVE_THRESH_MEAN_C, Imgproc.THRESH_BINARY, 11, 2);return adaptiveThresholdMat;}case "sift": {Mat siftMat = new Mat();return siftMat;}case "harris": {Mat harrisMat = new Mat();return harrisMat;}case "houghcircles": {Mat circles = new Mat();Imgproc.HoughCircles(mat, circles, Imgproc.HOUGH_GRADIENT, 1, mat.height() / 16, 100, 100, 0, 0);Mat resultMat = new Mat(circles.cols(), 3, CvType.CV_32F);for (int i = 0; i < circles.cols(); i++) {double[] circle = circles.get(0, i);resultMat.put(i, 0, circle[0]);resultMat.put(i, 1, circle[1]);resultMat.put(i, 2, circle[2]);}return resultMat;}case "clahe": {Mat claheMat = new Mat();CLAHE clahe = Imgproc.createCLAHE();clahe.apply(mat, claheMat);return claheMat;}case "rgb2hsv": {Mat hsvMat = new Mat();Imgproc.cvtColor(mat, hsvMat, Imgproc.COLOR_BGR2HSV);return hsvMat;}case "rgb2lab": {Mat labMat = new Mat();Imgproc.cvtColor(mat, labMat, Imgproc.COLOR_RGB2Lab);return labMat;}default:return mat;}}
}

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

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

相关文章

【Python 初级函数详解】—— 参数沙漠与作用域丛林的求生指南

欢迎来到ZyyOvO的博客✨&#xff0c;一个关于探索技术的角落&#xff0c;记录学习的点滴&#x1f4d6;&#xff0c;分享实用的技巧&#x1f6e0;️&#xff0c;偶尔还有一些奇思妙想&#x1f4a1; 本文由ZyyOvO原创✍️&#xff0c;感谢支持❤️&#xff01;请尊重原创&#x1…

夜天之书 #106 Apache 软件基金会如何投票选举?

近期若干开源组织进行换届选举。在此期间&#xff0c;拥有投票权的成员往往会热烈讨论&#xff0c;提名新成员候选人和治理团队的候选人。虽然讨论是容易进行的&#xff0c;但是实际的投票流程和运作方式&#xff0c;在一个成员众多的组织中&#xff0c;可能会有不少成员并不清…

DeepSeek开源周 Day04:从DualPipe聊聊大模型分布式训练的并行策略

DualPipe简介 今天是DeepSeek开源周的第四天&#xff0c;官方开源了一种新型并行计算优化策略——DualPipe。 其实大家阅读过Deepseek-V3技术报告的同学&#xff0c;对这个技术并不陌生。 开源地址&#xff1a;https://github.com/deepseek-ai/DualPipe 核心亮点 DualPipe&…

React:B站评论demo,实现列表渲染、删除按钮显示和功能实现、导航栏渲染切换及高亮显示、评论区的排序

功能要求&#xff1a; 1、渲染评论列表 2、删除评论功能&#xff1a;只显示自己评论的删除按钮&#xff1b;点击删除按钮&#xff0c;删除当前评论&#xff0c;列表中不再显示。 3、渲染导航Tab&#xff08;最新 | 最热&#xff09;和其 高亮实现 4、评论排序功能实现&…

一文了解:部署 Deepseek 各版本的硬件要求

很多朋友在咨询关于 DeepSeek 模型部署所需硬件资源的需求&#xff0c;最近自己实践了一部分&#xff0c;部分信息是通过各渠道收集整理&#xff0c;so 仅供参考。 言归正转&#xff0c;大家都知道&#xff0c;DeepSeek 模型的性能在很大程度上取决于它运行的硬件。我们先看一下…

C#贪心算法

贪心算法&#xff1a;生活与代码中的 “最优选择大师” 在生活里&#xff0c;我们常常面临各种选择&#xff0c;都希望能做出最有利的决策。比如在超市大促销时&#xff0c;面对琳琅满目的商品&#xff0c;你总想用有限的预算买到价值最高的东西。贪心算法&#xff0c;就像是一…

【JAVA SE基础】抽象类和接口

目录 一、前言 二、抽象类 2.1 抽象类的概念 2.2 抽象类语法 2.3 抽象类特性 2.4 抽象类的作用 三、接口 3.1 什么是接口 3.2 语法规则 3.3 接口使用 3.4 接口特性 3.5 实现多接口 3.6 接口间的继承 四、Object类 4.1 获取对象信息&#xff08; toString() &…

查找Excel包含关键字的行(の几种简单快速方法)

需求&#xff1a;数据在后缀为xlsx的Excel的sheet1中且量比较大&#xff0c;比如几十万行几百列&#xff1b;想查找一个关键字所在的行,比如"全网首发"&#xff1b; 情况①知道关键字在哪一列 情况②不确定在哪一列&#xff0c;很多列相似又不同&#xff0c;本文演…

网络运维学习笔记(DeepSeek优化版)009网工初级(HCIA-Datacom与CCNA-EI)路由理论基础与静态路由

文章目录 路由理论基础核心概念路由表六要素路由选路原则加表规则选路优先级 协议与参数常见协议号路由协议优先级对比 网络架构基础AS&#xff08;autonomous system&#xff0c;自治系统&#xff09;路由分类 静态路由(static routing)实验拓扑思科配置示例华为配置示例 典型…

Python 绘制迷宫游戏,自带最优解路线

1、需要安装pygame 2、上下左右移动&#xff0c;空格实现物体所在位置到终点的路线&#xff0c;会有虚线绘制。 import pygame import random import math# 迷宫单元格类 class Cell:def __init__(self, x, y):self.x xself.y yself.walls {top: True, right: True, botto…

基于Springboot博物馆文博资源库系统【附源码】

基于Springboot博物馆文博资源库系统 效果如下&#xff1a; 系统登陆页面 文物信息管理页面 流动申请页面 文物报修页面 个人信息页面 文物保修管理页面 系统主页面 文物类型页面 研究背景 随着信息技术的飞速发展&#xff0c;博物馆文博资源的管理与利用日益受到重视。传统…

【考试大纲】初级信息系统运行管理员考试大纲

目录 引言一、考试要求1、 考试说明2、 考试要求3、 本考试设置的科目包括:二、考试范围考试科目1:信息系统基础知识(初级)考试科目2:信息系统运行管理(应用技术)引言 最新的信息系统运行管理员考试大纲出版于 2018 年 9 月,本考试大纲基于此版本整理。 一、考试要求…

基于单片机的智能扫地机器人

1 电路设计 1.1 电源电路 本电源采用两块LM7805作为稳压电源&#xff0c;一块为控制电路和传感器电路供电&#xff0c;另一块单独为电机供电。分开供电这样做的好处&#xff0c;有利于减小干扰&#xff0c;提高系统稳定性。 LM7805是常用的三端稳压器件&#xff0c;顾名思义0…

传输层协议TCP

TCP全称为 传输控制协议(Transmission Control Protocol)&#xff0c;就是要对数据的传输进行一个详细的控制。 TCP协议段格式 源端口&#xff1a;发送方的端口号&#xff0c;用来标识发送端的应用程序或进程。 目标端口&#xff1a;接收方的端口号&#xff0c;用来标识接收端…

ST-LINK端口连接失败,启动GDB server失败的问题处理方法,有效

目录 1. 问题描述2. 解决办法2.1 后台关闭2.2 后台关闭无法找到ST进程或者关闭后未解决 1. 问题描述 报错&#xff1a; Failed to bind to port 61235, error code -1: No error Failure starting SWV server on TCP port: 61235 Failed to bind to port 61234, error code -1…

如何评估所选择的PHP后端框架的性能?

大家在选择PHP后端框架的时候&#xff0c;如果想评估其性能如何&#xff0c;能不能扛得住你的项目&#xff1f;可以根据以下几点进行分析&#xff0c;帮助大家选择到更符合自己心目中的PHP后端框架。 1. 基准测试 基准测试是评估框架性能的基础方法&#xff0c;主要通过模拟高…

P8649 [蓝桥杯 2017 省 B] k 倍区间--前缀和--同余定理【蓝桥杯简单题-必开long long】

P8649 [蓝桥杯 2017 省 B] k 倍区间--前缀和--同余定理 题目 分析代码 还有一件事【老爹音】 题目 分析 首先&#xff0c;看到”连续子序列求和”这一要求时&#xff0c;我们果断选择前缀和解答。 接着就要用到一个非常巧妙的“同余定理”——如果 sum[j] % K sum[i] % K&am…

如何免费使用稳定的deepseek

0、背景&#xff1a; 在AI辅助工作中&#xff0c;除了使用cursor做编程外&#xff0c;使用deepseek R1进行问题分析、数据分析、代码分析效果非常好。现在我经常会去拿行业信息、遇到的问题等去咨询R1&#xff0c;也给了自己不少启示。但是由于官网稳定性很差&#xff0c;很多…

【愚公系列】《Python网络爬虫从入门到精通》036-DataFrame日期数据处理

标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度…

PDF文档中表格以及形状解析

我们在做PDF文档解析时有时需要解析PDF文档中的表格、形状等数据。跟解析文本类似的常见的解决方案也是两种。文档解析跟ocr技术处理。下面我们来看看使用文档解析的方案来做PDF文档中的表格、图形解析&#xff08;使用pdfium库&#xff09;。 表格解析&#xff1a; 在pdfium库…