OpenCV(Python)基础—9小时入门版
OpenCV(Python)基础—9小时入门版
# =============================================
# Author : Mikigo
# Time : 2021/12/1
# =============================================
一、一句话简介
OpenCV (Open Source Computer Vision Library) 是用 C++ 语言编写,提供 Python、Java 等语言 API的一个开源计算机视觉库。
二、安装
1、Debian 系使用 apt 安装 OpencCV:
sudo apt install python-opencv
在 UOS 系统上,也可以使用:
sudo apt install python3-opencv
支持 AMD、ARM、MIPS 架构安装。
2、安装 NumPy:
NumPy 是 Python中的一个运算速度非常快的数学库,数组玩到起飞,如果你玩数据科学、机器学习,这是必学库。所有 OpenCV 数组结构都转换为 NumPy 数组,要想 OpenCV 学得好,必须熟悉它,学习 OpenCV 基础多少需要了解一点。
sudo apt -y install python3-numpy
好多同学安装 Python 库都习惯使用 pip 安装,实际上 OpenCV 也可以,但是目前只支持在 AMD,所以考虑到兼容性还是建议使用 apt 进行安装,并且官方文档也是建议使用 apt 安装。
三、入门基础
所有 OpenCV 类和函数都放在 cv 名称空间中,在 py 文件中导入:
import cv2 as cv
后续内容默认都使用了导入。
1、图像
1.1、读图像
img = cv.imread()
- 参数1:文件路径。(str)
- 参数2:读取图像的方式。
- cv.IMREAD_COLOR 加载一个彩色图像,忽略 alpha 通道。(默认值)
- cv.IMREAD_GRAYSCALE 加载图像为灰度模式。
- cv.IMREAD_UNCHANGED 加载图像,包括 alpha 通道。
- 还可以简单地分别传递整数1、0或 -1。
1.2、显示图像
cv.show()
- 参数1:窗口名称。(str)
- 参数2:图像。(obj)
在窗口中显示图像,窗口自动适合图像大小。
销毁窗口
cv.destroyAllWindows() # 销毁所有窗口
cv.destroyWindow("window_name") # 销毁某个窗口,参数传入窗口名称
1.3、写图像
cv.imwrite()
- 参数1:文件名。
- 参数2:图像。(obj)
2、视频
2.1、从摄像头捕获视频
cap = cv.VideoCapture(0)
它的参数可以是设备索引或视频文件的名称。设备索引就是指定哪个摄像头的数字。一般我们连接一个摄像头,所以传0(或-1)。当然可以通过传递1来选择第二个相机,以此类推。
import cv2 as cv
cap = cv.VideoCapture(0)# 判断是否打开
if not cap.isOpened(): exit()
while True: # 逐帧捕获ret, frame = cap.read() # 判断是否读取到if not ret: break# 转灰度gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)# 显示图像cv.imshow('frame', gray)# 监控键盘信号if cv.waitKey(1) == ord('q'):break
# 释放
cap.release()
cv.destroyAllWindows()
一切都看起来很和谐哈。
需要注意其他的两个判断:
- 有时候摄像头可能没有初始化成功,所以用
cap.isOpened()来判断,并退出。 - 可能没有接收到帧,停止循环。
获取视频的一些属性:
cap.get(id)
id 是一个从0到18的数字,每个数字表示视频的一个属性。每个属性代表什么→(docs.opencv.org/4.1.2/d4/d1…
cap.set() 属于进阶用法,这里按下不表。
2.2、从文件中播放视频
原理和从摄像头中捕获是一样的,区别在于:
cap = cv.VideoCapture('vtest.avi')
参数是文件名称。
2.3、保存视频
out = VideoWriter()
- 参数1:文件名
- 参数2:fourcc = cv.VideoWriter_fourcc(*‘XVID’)
- FourCC 是一个4字节的代码,用于指定视频编解码器。
- DIVX, XVID, MJPG, X264, WMV1, WMV2
- 不同的操作系统有差异 www.fourcc.org/codecs.php
- 参数3:帧率
- 参数3:分辨率
import cv2 as cv
cap = cv.VideoCapture(0)
fourcc = cv.VideoWriter_fourcc(*'XVID')
out = cv.VideoWriter('output.avi', fourcc, 20.0, (640, 480))
while cap.isOpened():ret, frame = cap.read()if not ret:break# 旋转后写入frame = cv.flip(frame, 0)out.write(frame)cv.imshow('frame', frame)if cv.waitKey(1) == ord('q'):break
# 释放
cap.release()
out.release()
cv.destroyAllWindows()
结合前面摄像头捕获视频的代码,看起来很简单~
3、绘图
3.1、画线
cv.line()
举例:创建一个黑色图像,并从左上角到右下角在上面画一条蓝线
import numpy as np
import cv2 as cv
# 写一个黑色的图像
img = np.zeros((512,512,3), np.uint8)
# 画一根5像素款的蓝线
cv.line(img,(0,0),(511,511),(255,0,0),5)
(255,0,0) 代表蓝色,最后一个参数是线的宽度。
3.2、画圆
cv.circle(img,(447,63), 63, (0,0,255), -1)
参数:中心坐标和半径
3.3、画矩形
cv.rectangle(img,(384,0),(510,128),(0,255,0),3)
参数:矩形的左上角和右下角
支持其他图形。。。
四、核心功能
1、图像的基本操作
1.1、访问和修改像素值
import numpy as np # 官方建议固定写法
import cv2 as cv
img = cv.imread('messi5.jpg')
px = img[100,100]
# (100, 100)的像素值[157 166 200](B、G和R值)
blue = img[100,100,0]
修改
img[100,100] = [255,255,255]
直接赋值即可修改,但是直接访问非常缓慢,更好的像素访问和编辑方法:
img.item(10,10,2) # 访问R值
img.itemset((10,10,2),100) # 修改R值
1.2、访问图像属性
图像属性包括行数、列数和通道数、图像数据类型、像素数等。
img.shape
# (342,548,3)
返回一个行、列和通道数的元组。
img.size # 访问像素总数
1.3、特定区域
机器学习中经常需要抠图,比如人脸识别时,一般会先选择人脸区域,搜索其中的眼睛,而不是搜索整个图像,以提供精确度。
ball = img[280:340, 330:390] # 抠一个区域
img[273:333, 100:160] = ball # 复制到另一个区域
1.4、图像信道的分裂与合并
b,g,r = cv.split(img) # 分裂
img = cv.merge((b,g,r)) # 合并
或者
b = img[:,:,0]
比如将所有红色像素设置为零
img[:,:,2] = 0
2、图像的算术运算
2.1、图片添加
cv.add()
可以添加两个图像
x = np.uint8([250])
y = np.uint8([10])
cv.add(x + y) # 250+10 = 260 => 255
OpenCV 的加法和 Numpy 的加法是有区别的。OpenCV 加法是一个饱和操作,而 Numpy 加法是一个除余操作。
x + y # 250+10 = 260 % 256 = 4
2.2、图像混合
cv.addWeighted()
也是图像添加,但不同的权重给予图像,使它给人一种混合或透明的感觉。
- 参数1、2:图像1及其权重。
- 参数3、4:图像2及其权重。
- 参数5:图像混合的α 值,通过改变 α 从0→1,你可以在一张图片到另一张图片之间进行一个很魔幻的转换。
img1 = cv.imread('ml.png')
img2 = cv.imread('opencv-logo.png')
# 第一幅图像的权重为0.7,第二幅图像的权重为0.3
dst = cv.addWeighted(img1,0.7,img2,0.3,0)
cv.imshow('dst',dst)
cv.waitKey(0)
cv.destroyAllWindows()
2.3、按位操作
按位 AND、 OR、 NOT 和 XOR 操作。
可以理解为图像的逻辑运算:
img1 = cv.imread('messi5.jpg')
img2 = cv.imread('opencv-logo-white.png')
# 把标志放在左上角,所以创建了一个roi
rows,cols,channels = img2.shape
roi = img1[0:rows, 0:cols ]
# 创建一个标志图案,以及它的反面
img2gray = cv.cvtColor(img2,cv.COLOR_BGR2GRAY) # 灰度处理
ret, mask = cv.threshold(img2gray, 10, 255, cv.THRESH_BINARY)
mask_inv = cv.bitwise_not(mask)
# 黑掉 ROI 中的 logo 区域
img1_bg = cv.bitwise_and(roi,roi,mask = mask_inv)
# 只取标志图像中的标志区域
img2_fg = cv.bitwise_and(img2,img2,mask = mask)
# 将 logo 放入 ROI 中,并修改主图像
dst = cv.add(img1_bg,img2_fg)
img1[0:rows, 0:cols ] = dst
cv.imshow('res',img1)
cv.waitKey(0)
cv.destroyAllWindows()
五、图像处理
1、改变色彩空间
OpenCV 目前有150多种颜色空间转换方法。但其中两个最广泛使用的:
1.1、Gray
cv.COLOR_BGR2GRAY
顾名思义:BGR → Gray
这个图像识别中经常使用,可以提供识别速度和准确度。
1.2、HSV
cv.COLOR_BGR2HSV
顾名思义:BGR → HSV
HSV 图像可以用它来提取有色物体在 HSV 中,比在 BGR 颜色空间中更容易表示颜色。
import cv2 as cv
import numpy as np
cap = cv.VideoCapture(0)
while True:# 取出视频的每一帧_, frame = cap.read()# 从 BGR 到 HSV 颜色空间的转换hsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV)# 定义 HSV 中蓝色的范围lower_blue = np.array([110,50,50])upper_blue = np.array([130,255,255])# 得到蓝色mask = cv.inRange(hsv, lower_blue, upper_blue)# 按位-and 蒙版和原始图像res = cv.bitwise_and(frame,frame, mask= mask)cv.imshow('frame',frame)cv.imshow('mask',mask)cv.imshow('res',res)k = cv.waitKey(5) & 0xFFif k == 27:break
cv.destroyAllWindows()
2、几何变换
2.1、缩放
res = cv.resize(InputArray, OutputArray, Size, fx, fy, interpolation)
| 参数 | 解释 |
|---|---|
| nputArray src | 输入图片 |
| OutputArray dst | 输出图片 |
| Size | 输出图片尺寸 |
| fx, fy | 沿x轴,y轴的缩放系数 |
| interpolation | 插入方式 |
interpolation 默认情况下,使用的插值方法是 cv.INTER_LINEAR,用于所有调整大小。
举例:
import numpy as np
import cv2 as cv
img = cv.imread('messi5.jpg')
res = cv.resize(img,None,fx=2, fy=2, interpolation = cv.INTER_CUBIC)
2.2、旋转
cv.getRotationMatrix2D()
旋转90度:
img = cv.imread('messi5.jpg',0)
rows,cols = img.shape
# cols-1 and rows-1 are the coordinate limits.
M = cv.getRotationMatrix2D(((cols-1)/2.0,(rows-1)/2.0),90,1)
dst = cv.warpAffine(img,M,(cols,rows))
3、图像阈值化
3.1、自适应阈值分割
如果像素值小于阈值,则将其设置为0,否则将其设置为最大值。
ret,thresh1 = cv.threshold(img,127,255,cv.THRESH_BINARY)
- cv.THRESH_BINARY
- cv.THRESH_BINARY_INV
- cv.THRESH_TRUNC
- cv.THRESH_TOZERO
- cv.THRESH_TOZERO_INV
如果一个图像在不同的区域有不同的照明条件,全局使用一个阈值一般是不可用的,对同一幅图像的不同区域采用不同的阈值,对不同光照条件下的图像取得了较好的效果。
- cv.ADAPTIVE_THRESH_MEAN_C 阈值是邻近区域的平均值减去常数 c
- cv.ADAPTIVE_THRESH_GAUSSIAN_C 阈值是邻域值减去常数 c 的高斯加权和
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
img = cv.imread('sudoku.png',0)
img = cv.medianBlur(img,5)
ret,th1 = cv.threshold(img,127,255,cv.THRESH_BINARY)
th2 = cv.adaptiveThreshold(img,255,cv.ADAPTIVE_THRESH_MEAN_C,cv.THRESH_BINARY,11,2)
th3 = cv.adaptiveThreshold(img,255,cv.ADAPTIVE_THRESH_GAUSSIAN_C,cv.THRESH_BINARY,11,2)
titles = ['Original Image', 'Global Thresholding (v = 127)','Adaptive Mean Thresholding', 'Adaptive Gaussian Thresholding']
images = [img, th1, th2, th3]
for i in xrange(4):plt.subplot(2,2,i+1),plt.imshow(images[i],'gray')plt.title(titles[i])plt.xticks([]),plt.yticks([])
plt.show()
4、模板匹配
4.1、单目标匹配
模板匹配是一种在较大图像中搜索和查找模板图像位置的方法。
cv.matchTemplate()
- 参数1:大图
- 参数2:小图
- 参数3:匹配方法
- cv.TM_CCOEFF
- cv.TM_CCOEFF_NORMED
- cv.TM_CCORR
- cv.TM_CCORR_NORMED
- cv.TM_SQDIFF
- cv.TM_SQDIFF_NORMED
查找最大/最小值
cv.minMaxLoc()
res = cv.matchTemplate(source, template, cv.TM_CCOEFF_NORMED)
cv.minMaxLoc(res)
4.2、多目标匹配
cv.minMaxLoc()不会给出所有位置。
通过阈值处理多个模板匹配。
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
img_rgb = cv.imread('mario.png')
img_gray = cv.cvtColor(img_rgb, cv.COLOR_BGR2GRAY)
template = cv.imread('mario_coin.png',0)
w, h = template.shape[::-1]
res = cv.matchTemplate(img_gray,template,cv.TM_CCOEFF_NORMED)
loc = np.where( res >= 0.8)
for pt in zip(*loc[::-1]):cv.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (0,0,255), 2)
cv.imwrite('res.png',img_rgb)
如果你对Python感兴趣,想要学习python,这里给大家分享一份Python全套学习资料,都是我自己学习时整理的,希望可以帮到你,一起加油!
😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓
Python全套学习资料

1️⃣零基础入门
① 学习路线
对于从来没有接触过Python的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

② 路线对应学习视频
还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~

③练习题
每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!

2️⃣国内外Python书籍、文档
① 文档和书籍资料

3️⃣Python工具包+项目源码合集
①Python工具包
学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!

②Python实战案例
光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!

③Python小游戏源码
如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!

4️⃣Python面试题
我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。


上述所有资料 ⚡️ ,朋友们如果有需要的,可以扫描下方👇👇👇二维码免费领取🆓

相关文章:
OpenCV(Python)基础—9小时入门版
OpenCV(Python)基础—9小时入门版 # # Author : Mikigo # Time : 2021/12/1 # 一、一句话简介 OpenCV (Open Source Computer Vision Library) 是用 C 语言编写,提供 Python、Java 等语言 API的一个开源计算机视觉库。 二、安装 1、Debian 系使用 apt 安装 O…...
SpringBoot整合Canal
一 linux docker compose版本 1.第一步:基础环境 (1)第1步:安装jak、maven、git、nodejs、npm yum install maven mvn -v 安装maven时会帮安装jdkyum install git git --version 2.27.0yum in…...
用 Python 提取某一个公众号下的所有文章
当我们想要提取某一个公众号下的所有文章时,我们可以借助微信公众平台的开放接口,通过Python编写一个爬虫程序来实现。下面是一个示例代码,以及如何将其转化为一篇详细的微信公众号推文文章。 1. 导入所需库 首先,我们需要导入所…...
鸿蒙4.0实战教学—基础ArkTS(简易视频播放器)
构建主界面 主界面由视频轮播模块和多个视频列表模块组成,效果图如图: VideoData.ets中定义的视频轮播图数组SWIPER_VIDEOS和视频列表图片数组HORIZONTAL_VIDEOS。 // VideoData.ets import { HorizontalVideoItem } from ./HorizontalVideoItem; impo…...
4. 深入 Python 流程控制
4. 深入 Python 流程控制 除了前面介绍的 while 语句,Python 还从其它语言借鉴了一些流程控制功能,并有所改变。 4.1. if 语句 也许最有名的是 if 语句。例如: >>> x int(raw_input("Please enter an integer: "))…...
2000-2022年上市公司股票流动性指标数据/股票流动性Amihud(原始数据+计算代码+计算结果)
2000-2022年上市公司股票流动性指标数据/股票流动性Amihud(原始数据计算代码计算结果) 1、时间:2000-2022年 3、指标:证券代码_没有单位、交易日期_没有单位、日个股交易金额_元、考虑现金红利再投资的日个股回报率_没有单位、交…...
Unity 数据存储PlayerPrefs管理类
Unity 数据存储PlayerPrefs管理类 Unity 数据存储PlayerPrefs管理类实现存取实体类对象存储格式为Json格式Singleton.csInventoryEntity.csDataManager.cs用法如下 Unity 数据存储PlayerPrefs管理类 实现存取实体类对象 存储格式为Json格式 源码如下: Singleton…...
一篇文章学会如何使用 NestJS 过滤器处理系统全局异常情况
前言 在实际的应用开发中,你或许遇到过异常处理机制不统一或错误信息展示混乱的现象。为了解决这些问题,NestJS提供了一个优雅的解决方案:过滤器(Filter)。本文将从实际出发,向你介绍NestJS过滤器的基本概…...
ubuntu 守护进程 supervisor
# 安装 apt-get install supervisor# 检查 echo_supervisord_conf# 查看配置文件所在位置 # [include] # files /etc/supervisor/conf.d/*.conf ps -ef | grep supervisorcd /etc/supervisor/conf.d/lscat frp.conf[program:frp] command /data/work/frp/frpc -c /data/work/…...
SparkStreaming_window_sparksql_reids
1.5 window 滚动窗口滑动窗口 window操作就是窗口函数。Spark Streaming提供了滑动窗口操作的支持,从而让我们可以对一个滑动窗口内的数据执行计算操作。每次掉落在窗口内的RDD的数据,会被聚合起来执行计算操作,然后生成的RDD,会…...
爬虫工作量由小到大的思维转变---<第二十四章 Scrapy的`统计数据`收集stats collection ---12月26日补>
前言: 前两篇是讲的数据诊断分析,还有一篇深挖解决内存泄漏的文章,目前我还没整理汇编出来;但是,想到分析问题的时候,忽然觉得爬虫的数据统计好像也挺重要;于是,心血来潮准备来插一篇这个------让大家对日常scrapy爬的数据,做到心里有数!不必自己去搅破脑汁捣腾日志,敲计算器了…...
Kafka:本地设置
这是设置 Kafka 将数据从 Elasticsearch 发布到 Kafka 主题的三部分系列的第一部分;该主题将被 Neo4j 使用。第一部分帮助您在本地设置 Kafka。第二部分将讨论如何设置Elasticsearch将数据发布到Kafka主题。最后 将详细介绍如何使用连接器订阅主题并使用数据。 Kafka Kafka 是…...
.NetCore NPOI 读取excel内容及单元格内图片
由于数据方提供的数据在excel文件中不止有文字内容还包含图片信息,于是编写相关测试代码,读取excel文件内容及图片信息. 本文使用的是 NPOI-2.6.2 版本,此版本持.Net4.7.2;.NetStandard2.0;.NetStandard2.1;.Net6.0。 测试文档内容…...
TCP/UDP协议
1. 请解释TCP和UDP的主要区别。 TCP和UDP都是位于传输层的协议,具有不同的特点和应用场景。以下是它们的主要区别: 连接方式:TCP是面向连接的协议,这意味着在数据传输之前需要先建立连接。这通常通过三次握手来建立连接ÿ…...
3D 渲染如何帮助电商促进销售?
在线工具推荐: 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 3D 渲染图像因其高转化率而成为亚马逊卖家的最新趋势。它是电子商务平…...
使用栈求表达式的值【数据结构】
中缀表达式转后缀表达式 转换流程: 初始化一个运算符栈。自左向右扫描中缀表达式,当扫描到操作数时直接连接到后缀表达式上。当扫描到操作符时,和运算符栈栈顶的操作符进行比较。如果比栈顶运算符高,则入栈。如果比栈顶运算符低…...
{MySQL}索引事务和JDBC
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、索引1.1索引是什么1.2作用1.3代码 二、事务2.1什么是事务2.2使用 三.JDBC总结 前言 接着上次,继续讲下MySQL 提示:以下是本篇文章正…...
Qt designer界面和所有组件功能的详细介绍(全!!!)
PyQt5和Qt designer的详细安装教程:https://blog.csdn.net/qq_43811536/article/details/135185233?spm1001.2014.3001.5501 目录 1. 界面介绍2. Widget Box 常用组件2.1 Layouts(布局)2.2 Spacers(间隔器)2.3 Item V…...
mysql_存储过程
举例子 createdefiner root% procedure insert_batch_test(IN START int(10), IN max_num int(10)) BEGINDECLAREi INT DEFAULT 0;SET autocommit 0;REPEATSET i i 1;INSERT INTO test (std, score)VALUES (CEILING(RAND() * 10 100), CEILING(RAND() * 50 50));UNTIL i …...
uboot学习及内核更换_incomplete
官方文档 在前面 文章目录 uboot常见命令学习环境变量网络控制台uboot标准启动其他 升级uboot或内核bin和uimg以及booti和bootm的区别制作uImage更换内核更换uboot后续计划 uboot常见命令学习 环境变量 Environment Variables环境变量 autostart 如果值为yes,则会…...
百川2-13B模型辅助C语言学习:从语法答疑到代码调试
百川2-13B模型辅助C语言学习:从语法答疑到代码调试 学C语言,尤其是刚入门那会儿,你是不是也经历过这样的时刻?面对指针、内存这些概念,感觉像在看天书;自己写的代码编译报错,满屏的红色提示让人…...
收藏备用!小红书二面大模型面试题:Agent 基本架构核心组件详解(小白也能看懂)
很多程序员和大模型小白反馈,最近小红书二面被问到了一道高频题:「Agent 的基本架构由哪些核心组件构成?」,这道题看似基础,却能快速考察对 Agent 核心逻辑的理解,不管是面试还是日常学习都必须掌握。今天就…...
Ollama GUI架构解析:现代本地LLM交互界面的技术实现与隐私优先设计
Ollama GUI架构解析:现代本地LLM交互界面的技术实现与隐私优先设计 【免费下载链接】ollama-gui 项目地址: https://gitcode.com/gh_mirrors/ol/ollama-gui 在人工智能技术快速发展的今天,本地化部署的大语言模型(LLM)成为…...
从一次数据精度丢失的坑说起:详解Pandas fillna的‘静默下转型’与infer_objects的正确用法
从数据精度陷阱到稳健处理:Pandas类型转换的深度防御实践 1. 当.fillna(0)成为数据分析的隐形杀手 凌晨三点的办公室,咖啡杯早已见底。数据分析师李明盯着屏幕上诡异的报表结果——所有百分比计算结果突然变成了整齐的整数。这个看似简单的数据清洗操作…...
基于VibeVoice和卷积神经网络的语音风格迁移
基于VibeVoice和卷积神经网络的语音风格迁移 1. 引言 你有没有想过,让AI用你喜欢的名人声音来朗读一篇文章?或者用某个特定角色的声音来讲述你的故事?这就是语音风格迁移技术的魅力所在。 传统的语音合成技术虽然已经相当成熟,…...
【Java 25向量API工业落地白皮书】:20年JVM专家亲授4大高并发场景实战代码(含SIMD加速性能实测数据)
第一章:Java 25向量API工业落地全景概览Java 25正式将Vector API(JEP 478)升级为标准特性,标志着JVM在高性能数值计算领域迈入新阶段。该API通过泛型向量类型(如Vector<Double>)、跨平台掩码操作与自…...
LiuJuan Z-Image效果对比展示:BF16 vs FP16在人像细节与稳定性上的差异
1. 1. 1. 1. 1. 1. 1. 1. 1. 概述 1. 1. 1. 概述 1. 1. 概述 1. 概述 1. 概述 1. 概述 1. 概述 1. 概述 1. 1. 概述 1. 概述 1. 概述 1. 概述 1. 1. 概述 1. 概述 1. 概述 1. 概述 1. 概述 1. 概述 1. 概述 1. 概述 1. 概述 1. 概述 1. 概述 1. 概述 1. 概述 1. 概述 1. 概述 1…...
告别散斑噪声困扰:用PyTorch手把手实现DenoDet的频域去噪模块(附完整代码)
频域魔法:用PyTorch实现SAR图像去噪的工程实践 当你在处理SAR图像时,是否曾被那些恼人的散斑噪声困扰?这些像胡椒粒一样随机分布的噪声点不仅影响视觉效果,更会严重干扰目标检测的准确性。传统方法试图在空间域直接对抗噪声&#…...
从聊天机器人到业务执行者:Agentic Orchestration 如何重构 Java 后端体系
引言 在 RAG 1.0 时代,我们费尽心思让 AI“说得对、答得准”; 而进入 2026 年的 Agentic Orchestration(智能体编排) 时代,我们的目标已经变成:让 AI 做得对、跑得稳、能闭环。 用户说“帮我把昨天买贵的衣…...
雪女-斗罗大陆-造相Z-Turbo系统管理:Ubuntu服务器运维与模型服务监控
雪女-斗罗大陆-造相Z-Turbo系统管理:Ubuntu服务器运维与模型服务监控 想让你的“雪女”模型在Ubuntu服务器上像真正的封号斗罗一样,拥有稳定、可靠、持久的战斗力吗?对于任何投入生产环境的AI服务来说,部署成功只是第一步&#x…...
