得到的数组当作索引,是一个很棒的技巧
2.大津二值法 Otsu’s Method
一种自动确定阈值的二值化方法
PyCharm报错:AttributeError: ‘NoneType’ object has no attribute ‘astype’ 大概率是文件路径不对
def otsu_binarization ( img, th= 128 ) :
max_sigma = 0
max_t = 0
for _t in range ( 1 , 255 ) :
v0 = out[ np. where( out < _t) ]
m0 = np. mean( v0) if len ( v0) > 0 else 0 .
w0 = len ( v0) / ( H * W)
v1 = out[ np. where( out >= _t) ]
m1 = np. mean( v1) if len ( v1) > 0 else 0 .
w1 = len ( v1) / ( H * W)
sigma = w0 * w1 * ( ( m0 - m1) ** 2 )
if sigma > max_sigma:
max_sigma = sigma
max_t = _t
print ( "threshold >>" , max_t)
th = max_t
out[ out < th] = 0
out[ out >= th] = 255
return out
定义一个分离度
,包含类间方差与类内方差两个影响因素。遍历所有阈值,使得这个分离度取得最高的阈值,便是那个最佳的阈值
。
3.HSV与RGB互相转换
H:hue,色相,从0取值至360,代表了所有的颜色,例如0和360代表红色,180代表青色 S:saturation,饱和度,0<=S<1,代表颜色纯度。S=max-min V:value,亮度,0<=V<1。V=max
一张图片求反色,可行的方法是将图片由RGB转向HSV,然后将H+180,再转回RGB
下面的转换程序需要注意这样几点
使用np.imread读取的图片,通道顺序是(y,x,c)-->计算机是先说图片的高、再说图片的宽、最后说通道
1.1其中c的顺序是B->G->R 1.2reshape()与.shape中的通道顺序都是z->y->x
1.3我们常说一张图片尺寸为 1080 × 720 1080\times 720 1 0 8 0 × 7 2 0 ,这个顺序是x->y
。口头的说法与imread读取的结果相反
.copy()
这种浅拷贝与直接赋值(赋引用)效果很接近 需要区别的是.deepcopy()
hsv[..., 0]
与hsv[:,:,0]
同含义
np.argmin(img, axis=2)表示按图片中的第三个方向(c方向)进行比较与压缩
,求得最小值的索引 –>由此便知道了整张图片的每个像素中,哪个通道最弱 5.解释下.where()的用法,它返回的是索引tuple
>> > a = np. array( [ 2 , 4 , 6 , 8 , 10 ] )
>> > np. where( a > 5 )
( array( [ 2 , 3 , 4 ] ) , )
>> > a[ np. where( a > 5 ) ]
array( [ 6 , 8 , 10 ] )
>> > np. where( [ [ 0 , 1 ] , [ 1 , 0 ] ] )
( array( [ 0 , 1 ] ) , array( [ 1 , 0 ] ) )
示例程序:
def BGR2HSV ( _img) :
img = _img. copy( ) / 255 .
hsv = np. zeros_like( img, dtype= np. float32)
max_v = np. max ( img, axis= 2 ) . copy( )
min_v = np. min ( img, axis= 2 ) . copy( )
min_arg = np. argmin( img, axis= 2 )
hsv[ . . . , 0 ] [ np. where( max_v == min_v) ] = 0
ind = np. where( min_arg == 0 )
hsv[ . . . , 0 ] [ ind] = 60 * ( img[ . . . , 1 ] [ ind] - img[ . . . , 2 ] [ ind] ) / ( max_v[ ind] - min_v[ ind] ) + 60
ind = np. where( min_arg == 2 )
hsv[ . . . , 0 ] [ ind] = 60 * ( img[ . . . , 0 ] [ ind] - img[ . . . , 1 ] [ ind] ) / ( max_v[ ind] - min_v[ ind] ) + 180
ind = np. where( min_arg == 1 )
hsv[ . . . , 0 ] [ ind] = 60 * ( img[ . . . , 2 ] [ ind] - img[ . . . , 0 ] [ ind] ) / ( max_v[ ind] - min_v[ ind] ) + 300
hsv[ . . . , 1 ] = max_v. copy( ) - min_v. copy( )
hsv[ . . . , 2 ] = max_v. copy( )
return hsv
def HSV2BGR ( _img, hsv) :
img = _img. copy( ) / 255 .
max_v = np. max ( img, axis= 2 ) . copy( )
min_v = np. min ( img, axis= 2 ) . copy( )
out = np. zeros_like( img)
H = hsv[ . . . , 0 ]
S = hsv[ . . . , 1 ]
V = hsv[ . . . , 2 ]
C = S
H_ = H / 60 .
X = C * ( 1 - np. abs ( H_ % 2 - 1 ) )
Z = np. zeros_like( H)
vals = [ [ Z, X, C] , [ Z, C, X] , [ X, C, Z] , [ C, X, Z] , [ C, Z, X] , [ X, Z, C] ]
for i in range ( 6 ) :
ind = np. where( ( i <= H_) & ( H_ < ( i+ 1 ) ) )
out[ . . . , 0 ] [ ind] = ( V - C) [ ind] + vals[ i] [ 0 ] [ ind]
out[ . . . , 1 ] [ ind] = ( V - C) [ ind] + vals[ i] [ 1 ] [ ind]
out[ . . . , 2 ] [ ind] = ( V - C) [ ind] + vals[ i] [ 2 ] [ ind]
out[ np. where( max_v == min_v) ] = 0
out = np. clip( out, 0 , 1 )
out = ( out * 255 ) . astype( np. uint8)
return out
4.色彩减少
即色彩量化,使得RGB的值只能取[32,96,160,224],可以用来压缩图像,但是也会使得图像质量变差
def dicrease_color ( img) :
out = img. copy( )
out = out // 64 * 64 + 32
return out
//
是取商运算符,如7//2结果为3 代码中的out
是一个三通道的图像,在对其进行运算时,是对其中的所有数进行操作
5.平均池化
将整个图片网格(grid)化,再对其中的每一个网格进行求均值,得到的均值作为整个网格的值,这种操作就是池化。其实得到的效果与打码无异。
def my_pooling ( img, G= 8 ) :
H, W, C = img. shape
out = np. zeros( ( H, W, C) , np. uint8)
Nh = int ( H/ G)
Wh = int ( W/ G)
print ( img. dtype)
print ( ( np. zeros( ( H, W, C) , np. int ) ) . dtype)
for y in range ( Nh) :
for x in range ( Wh) :
for c in range ( C) :
out[ G* y: G* ( y+ 1 ) , G* x: G* ( x+ 1 ) , c] = np. mean( img[ G* y: G* ( y+ 1 ) , G* x: G* ( x+ 1 ) , c] ) . astype( np. int )
return out
注意图像初始化时,其类型一定要是uint8,不能指为int–>默认指的是int32
6.最大池化
与平均池化类似,先将图片网格化,再求每个网格的最大值作为整个网格的代表。相当于加高亮度的打码
卷积滤波
7.高斯滤波
1.高斯滤波常用来去噪,类似作用的还有中值滤波(取中间值)、均值滤波(取平均值)、LoG(Laplacian of Gaussian)滤波器,都可用来去噪。 2.从有无kernel的角度来讲,中值滤波与均值滤波是同一类,它们没有一个固定的卷积kernel 3.高斯滤波的kernel权重由二维高斯函数(二维正态分布)给出,有了kernel以后,对整个图片进行滑动窗口卷积 即可。 4.由于图片的长宽一般不是kernel尺寸的的整数倍,因此我们需要在图片的边缘补0,这种方法称为zero padding ,并且卷积核要进行归一化 操作。 4.1 可以想象,对于一个 3 × 3 3\times 3 3 × 3 的卷积核,那么填充的边缘尺寸应该为1;对于一个 7 × 7 7\times 7 7 × 7 的卷积核,需要填充的尺寸应该是3。由此可以总结出公式: P a d d i n g = S i z e k e r n e l / / 2 Padding = Size_{kernel} // 2 P a d d i n g = S i z e k e r n e l / / 2 5.这里的高斯滤波对图像的三个通道都进行了计算,不需要转换为灰度图 6.边缘检测一般都需要针对灰度图进行 7.ndarray的相乘就是对位相乘,得到的是一个同规模的ndarray ,对结果矩阵进行求和,就相当于进行了卷积
def gaussian_filter ( img, K_size= 3 , sigma= 1.3 ) :
if len ( img. shape) == 3 :
H, W, C = img. shape
else :
img = np. expand_dims( img, axis= - 1 )
H, W, C = img. shape
pad = K_size // 2
out = np. zeros( ( H + pad * 2 , W + pad * 2 , C) , dtype= np. float )
out[ pad: pad + H, pad: pad + W] = img. copy( ) . astype( np. float )
K = np. zeros( ( K_size, K_size) , dtype= np. float )
for x in range ( - pad, - pad + K_size) :
for y in range ( - pad, - pad + K_size) :
K[ y + pad, x + pad] = np. exp( - ( x ** 2 + y ** 2 ) / ( 2 * ( sigma ** 2 ) ) )
K /= ( 2 * np. pi * sigma * sigma)
K /= K. sum ( )
tmp = out. copy( )
for y in range ( H) :
for x in range ( W) :
for c in range ( C) :
out[ pad + y, pad + x, c] = np. sum ( K * tmp[ y: y + K_size, x: x + K_size, c] )
out = np. clip( out, 0 , 255 )
out = out[ pad: pad + H, pad: pad + W] . astype( np. uint8)
return out
8. Motion Filter
其卷积核如下所示 K = [ 1 3 0 0 0 1 3 0 0 0 1 3 ] K=\begin{bmatrix} \frac{1}{3}&0&0\\ 0&\frac{1}{3}&0\\ 0&0&\frac{1}{3} \end{bmatrix} K = ⎣ ⎡ 3 1 0 0 0 3 1 0 0 0 3 1 ⎦ ⎤ 取对角线像素的均值。处理后的结果看起来很动感
def my_motion_filter ( img, ksize= 3 ) :
H, W, C = img. shape
kernel = np. diag( [ 1 ] * ksize) . astype( float )
kernel /= ksize
pad = ksize// 2
out = np. zeros( ( H+ pad* 2 , W+ pad* 2 , C) , dtype= float )
print ( out. shape)
out[ pad: pad + H, pad: pad + W] = img. copy( ) . astype( np. float )
for y in range ( H) :
for x in range ( W) :
for c in range ( C) :
out[ pad + y, pad + x, c] = np. sum ( kernel * out[ y: y + ksize, x: x + ksize, c] )
out = out[ pad: pad + H, pad: pad + W] . astype( np. uint8)
return out
9.差分滤波器
纵向
K = [ 0 − 1 0 0 1 0 0 0 0 ] K=\begin{bmatrix} 0&-1&0\\ 0&1&0\\ 0&0&0 \end{bmatrix} K = ⎣ ⎡ 0 0 0 − 1 1 0 0 0 0 ⎦ ⎤ 横向
K = [ 0 0 0 − 1 1 0 0 0 0 ] K=\begin{bmatrix} 0&0&0\\ -1&1&0\\ 0&0&0 \end{bmatrix} K = ⎣ ⎡ 0 − 1 0 0 1 0 0 0 0 ⎦ ⎤
直接初始化卷积核然后卷积即可
def different_filter ( img, K_size= 3 ) :
H, W, C = img. shape
pad = K_size // 2
out = np. zeros( ( H + pad * 2 , W + pad * 2 ) , dtype= np. float )
out[ pad: pad + H, pad: pad + W] = gray. copy( ) . astype( np. float )
tmp = out. copy( )
out_v = out. copy( )
out_h = out. copy( )
Kv = [ [ 0 . , - 1 . , 0 . ] , [ 0 . , 1 . , 0 . ] , [ 0 . , 0 . , 0 . ] ]
Kh = [ [ 0 . , 0 . , 0 . ] , [ - 1 . , 1 . , 0 . ] , [ 0 . , 0 . , 0 . ] ]
for y in range ( H) :
for x in range ( W) :
out_v[ pad + y, pad + x] = np. sum ( Kv * ( tmp[ y: y + K_size, x: x + K_size] ) )
out_h[ pad + y, pad + x] = np. sum ( Kh * ( tmp[ y: y + K_size, x: x + K_size] ) )
out_v = np. clip( out_v, 0 , 255 )
out_h = np. clip( out_h, 0 , 255 )
out_v = out_v[ pad: pad + H, pad: pad + W] . astype( np. uint8)
out_h = out_h[ pad: pad + H, pad: pad + W] . astype( np. uint8)
return out_v, out_h
10.Sobel与Prewitt滤波器
略
11.Laplacian滤波器
K = [ 0 1 0 1 − 4 1 0 1 0 ] K=\begin{bmatrix} 0&1&0\\ 1&-4&1\\ 0&1&0 \end{bmatrix} K = ⎣ ⎡ 0 1 0 1 − 4 1 0 1 0 ⎦ ⎤ 对灰度图进行二阶导得到的核
12.Emboss滤波器
K = [ − 2 − 1 0 − 1 1 1 0 1 2 ] K=\begin{bmatrix} -2&-1&0\\ -1&1&1\\ 0&1&2 \end{bmatrix} K = ⎣ ⎡ − 2 − 1 0 − 1 1 1 0 1 2 ⎦ ⎤ 得到的轮廓更加清晰
13.LoG滤波器
对图像进行高斯滤波器平滑之后再使用拉普拉斯滤波器使得图像轮廓更加清晰 这是为了防止拉普拉斯滤波器使噪声增强了
彩色图像分为:索引图像(用索引代表颜色)与真彩色图像(RGB代表图像) 图像质量评价受主观因素的影响
你可能感兴趣的:(图像处理)
GStreamer —— 3.2、Qt+GStreamer+OpenCV制作图像处理播放器(对每帧图像处理),支持本地mp4文件、rtsp流、usb摄像头等(可跨平台,附源码)
信必诺
GStreamer Qt GStreamer Qt
运行效果 介绍 本项目是一个结合了Qt、GStreamer和OpenCV的跨平台图像处理播放器项目。该
人脸识别的一些代码
饿了就干饭
CV相关 人脸识别
1、cv2入门函数imread及其相关操作2、(详解)opencv里的cv2.resize改变图片大小Python3、机器学习之人脸识别face_recognition使用4、使用face_recognition进行人脸校准5、简单的人脸识别通用流程示意图(这个看着写的挺好的)6、face_recognition和图像处理中left、top、right、bottom解释7、使用pillow库对图片
【人工智能】大模型的幻觉问题:DeepSeek 的解决策略与实践
蒙娜丽宁
Python杂谈 人工智能 人工智能
《PythonOpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门!解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界大语言模型(LLM)的“幻觉”问题,即模型生成与事实不符或脱离上下文的内容,是限制其广泛应用的关键挑战之一。本文深入探讨了幻觉问题的成因,包括训练数据的偏差、推理过程中的过度泛化以及缺乏外部验证机制。以DeepSeek系列模型为研究对象,我们分析了其在解
深度学习与目标检测系列(三) 本文约(4万字) | 全面解读复现AlexNet | Pytorch |
小酒馆燃着灯
深度学习 目标检测 pytorch AlexNet 人工智能
文章目录解读Abstract-摘要翻译精读主要内容1.Introduction—前言翻译精读主要内容:本文主要贡献:2.TheDataset-数据集翻译精读主要内容:ImageNet简介:图像处理方法:3.TheArchitecture—网络结构3.1ReLUNonlinearity—非线性激活函数ReLU翻译精读传统方法及不足本文改进方法本文的改进结果3.2TrainingonMultipleG
10.2 如何解决从复杂 PDF 文件中提取数据的问题?
墨染辉
大语言模型 pdf
10.2如何解决从复杂PDF文件中提取数据的问题?解决方案:嵌入式表格检索解释:嵌入式表格检索是一种专门针对从复杂PDF文件中的表格提取数据的技术。它结合了表格识别、解析和语义理解,使得从复杂结构的表格中检索信息成为可能。具体步骤:表格检测和识别:目标:在PDF页面中准确地定位和识别表格区域。方法:使用计算机视觉和深度学习技术,如卷积神经网络(CNN)或其他先进的图像处理算法。效果:能够检测出页面
并查集:从连通性检测到动态合并的算法艺术
六七_Shmily
数据结构与算法分析 算法
并查集:从连通性检测到动态合并的算法艺术(C++实现)一、并查集:算法世界的隐形支柱在算法竞赛和工程实践中,并查集(DisjointSetUnion,DSU)是解决动态连通性问题的终极武器。它能在近乎常数时间内完成集合的合并与查询操作,广泛应用于社交网络、图像处理、编译器优化等领域。本文将深入剖析并查集的核心原理,并通过实战案例揭示其精妙之处。二、并查集的三重核心1.数据结构设计classDSU{
深度学习的颠覆性发展:从卷积神经网络到Transformer
AI天才研究院
AI大模型应用入门实战与进阶 ChatGPT 大数据 人工智能 语言模型 AI LLM Java Python 架构设计 Agent RPA
1.背景介绍深度学习是人工智能的核心技术之一,它通过模拟人类大脑中的神经网络学习从大数据中抽取知识,从而实现智能化的自动化处理。深度学习的发展历程可以分为以下几个阶段:2006年,GeoffreyHinton等人开始研究卷积神经网络(ConvolutionalNeuralNetworks,CNN),这是深度学习的第一个大突破。CNN主要应用于图像处理和语音识别等领域。2012年,AlexKrizh
实测 Gemini 2.0 Flash 图像生成:多模态 AI 的创作力边界
python
近日,Google发布了Gemini2.0Flash的实验性图像生成功能(Gemini2.0Flash(ImageGeneration)Experimental)。我也第一时间体验了这一功能,再次感受到AI技术对传统图像处理工具的颠覆性冲击。本文从主要功能、安装方法、应用场景,并通过实际测试展示其能力,希望帮助大家更好地了解和使用这一工具。引言Gemini2.0Flash的实验性图像生成功能于20
gralloc usage flags
Damon_X
gralloc
下面这些示例主要说明了grallocusageflags在图像处理和多媒体应用中如何影响性能和正确性。让我们逐个详细分析每个问题的根因和修复方案,并深入解析gralloc标志对缓存管理和数据流的影响。✅Example1:长曝光快照耗时异常问题描述症状:长曝光快照(longexposuresnapshot)在某些内存优化后,拍摄时间异常变长。根因:第三方算法在多个快照帧上执行,耗时约1.2秒。Buf
【OpenGL】实现三维空间漫游和立方体、球体贴图
a9c93f2300
圖形學 3d
图像处理引用文件stb_image.h访问镜像下载:https://gitee.com/mirrors/stb-image主函数main.cpp#include#include#defineSTB_IMAGE_IMPLEMENTATION#include#include#include#include#include#include#includeconstGLfloatPI=3.14159265
人工智能之数学基础:线性子空间
每天五分钟玩转人工智能
机器学习深度学习之数学基础 人工智能 深度学习 线性代数 线性子空间 线性空间
本文重点在前面的课程中,我们学习了线性空间,本文我们我们在此基础上学习线性子空间。在应用中,线性子空间的概念被广泛应用于信号处理、机器学习、图像处理等领域。子空间的性质子空间是线性空间的一部分,它需要满足下面的性质:设V是数域F上的线性空间,W是V的一个非空子集。如果W对于V中的加法运算和数乘运算也构成F上的一个线性空间,则称W为V的线性子空间(或称向量子空间)。具体来说,设V是一个线性空间,W是
YOLO魔改之频率分割模块(FDM)
清风AI
YOLO算法魔改系列 YOLO 人工智能 计算机视觉 目标检测 python 深度学习
目标检测原理目标检测是一种将目标分割和识别相结合的图像处理技术,旨在从图像中定位并识别特定目标。深度学习方法,如FasterR-CNN和YOLO系列,已成为主流解决方案。这些方法通常采用两阶段或单阶段策略,通过卷积神经网络(CNN)提取特征并进行分类和定位。在小目标检测中,为克服分辨率低和特征不明显的问题,模型设计中会特别注重特征融合和多尺度处理,以增强对小目标的感知能力。YOLOv8基础YOLO
Adobe Lightroom Classic(简称LRC)图像编辑和管理软件下载安装与使用
xczrFDG
adobe
AdobeLightroomClassic(LRC)软件简介AdobeLightroomClassic(简称LRC)是一款强大的图像编辑和管理软件,专为摄影师和图像处理爱好者设计。LRC不仅提供了一系列的编辑工具,还集成了强大的照片管理和组织功能,使用户能够高效地处理和发布摄影作品。该软件是AdobeCreativeCloud的一部分,适用于各类用户,无论是业余爱好者还是专业摄影师。安装包http
使用 TensorFlow 进行图像处理:深度解析卷积神经网络(CNN)
一碗黄焖鸡三碗米饭
人工智能前沿与实践 tensorflow 图像处理 cnn 人工智能 机器学习 python ai
目录使用TensorFlow进行图像处理:深度解析卷积神经网络(CNN)1.什么是卷积神经网络(CNN)?CNN的基本结构为什么CNN适合图像处理?2.使用TensorFlow构建CNN2.1环境准备2.2加载并预处理MNIST数据集2.3构建CNN模型2.4编译和训练模型2.5评估模型3.CNN的优化与改进3.1使用数据增强3.2调整网络结构4.CNN在其他图像处理任务中的应用5.总结参考文献在
Opencv计算机视觉编程攻略-第一节 图像读取与基本处理
weixin_44242403
深度学习 opencv 计算机视觉
1.图像读取导入依赖项的h文件#include#include#include#include项目Valuecore.hpp基础数据结构和操作(图像存储、矩阵运算、文件I/O)highgui.hpp图像显示、窗口管理、用户交互(图像/视频显示、用户输入处理、结果保存)imgproc.hpp图像处理算法(图像滤波、几何变换、边缘检测、形态学操作)二读取图片Matimage;//图像矩阵std::co
图像处理篇---图像预处理
Ronin-Lotus
图像处理篇 深度学习篇 程序代码篇 图像处理 人工智能 opencv python 深度学习 计算机视觉
文章目录前言一、通用目的1.1数据标准化目的实现1.2噪声抑制目的实现高斯滤波中值滤波双边滤波1.3尺寸统一化目的实现1.4数据增强目的实现1.5特征增强目的实现:边缘检测直方图均衡化锐化二、分领域预处理2.1传统机器学习(如SVM、随机森林)2.1.1特点2.1.2预处理重点灰度化二值化形态学操作特征工程2.2深度学习(如CNN、Transformer)2.2.1特点2.2.2预处理重点通道顺序
机器视觉中图像的腐蚀和膨胀是什么意思?它能用来做什么?
yuanpan
机器学习 人工智能 计算机视觉 图像处理
腐蚀(Erosion)和膨胀(Dilation)是两种基本的形态学操作,通常用于二值图像(黑白图像)的处理。它们是形态学图像处理的基础,广泛应用于图像分割、边缘检测、噪声去除等任务。1.腐蚀(Erosion)腐蚀操作通过对图像中的前景区域(通常为白色像素)进行“收缩”来去除边界上的像素。具体来说,腐蚀操作使用一个结构元素(通常是一个小的矩阵或核)在图像上滑动,只有当结构元素完全覆盖前景区域时,中心
Halcon 和 opencv比有什么区别与优劣
yuanpan
opencv 人工智能 计算机视觉
Halcon和OpenCV都是机器视觉领域的重要工具,但它们的设计目标、功能特点和适用场景有所不同。以下是两者的详细对比:1.定位与目标用户Halcon:定位:商业机器视觉软件,专注于工业应用。目标用户:工业自动化、质量控制、机器人引导等领域的专业开发者。OpenCV:定位:开源计算机视觉库,适用于通用图像处理和计算机视觉任务。目标用户:学术研究、教育、初创公司以及需要低成本解决方案的开发者。2.
解决 Python 中 `cv2` 模块部分初始化导致的 `AttributeError`
Leuanghing
python 开发语言
解决Python中cv2模块部分初始化导致的AttributeError在Python开发中,尤其是使用OpenCV库进行图像处理时,可能会遇到一些令人困惑的错误。今天,我们就来探讨一个常见的错误:AttributeError:partiallyinitializedmodule'cv2'hasnoattribute'gapi_wip_gst_GStreamerPipeline',并提供一个有效的
Camera常用算法介绍1
记录美好
android相机学习 算法 经验分享 智能手机
Camera常用数据格式及算法介绍1二、Camera常用算法介绍2.1基础图像处理算法2.1.1HDR算法2.1.1.1HDR算法概述2.1.1.2发展历程2.1.1.2.1传统多帧合成阶段(2010年代初期)2.1.1.2.2.算法优化阶段(2016-2020年)2.1.1.2.3实时处理阶段(2020年至今)2.1.1.3技术原理2.1.1.3.1多帧采集2.1.1.3.2图像合成2.1.1.
【图像处理基石】什么是HDR图片?
AndrewHZ
AI算法工程师面试指北 图像处理基石 图像处理 算法 计算机视觉 HDR 高动态范围 包围曝光 opencv
1.什么是HDR图片?HDR(高动态范围图像,HighDynamicRange)是一种通过技术手段扩展照片明暗细节的成像方式。以下是关于HDR的详细说明:核心原理动态范围:指图像中最亮和最暗区域之间的亮度差。人眼能感知的动态范围远高于普通相机,HDR通过合成多张不同曝光的照片(如欠曝、正常、过曝),平衡高光和阴影细节。HDR的优势保留细节:避免强光下过曝(如天空发白)或阴影中欠曝(如暗部死黑)。增
使用TensorFlow、OpenCV和Pygame实现图像处理与游戏开发
UwoiGit
tensorflow opencv pygame
在本篇文章中,我们将介绍如何结合使用TensorFlow、OpenCV和Pygame来进行图像处理和游戏开发。这三个工具在机器学习、计算机视觉和游戏开发领域都非常流行,并且它们的结合可以提供强大的功能和无限的创造力。我们将逐步介绍如何安装和配置这些工具,并提供相关的源代码示例。安装TensorFlowTensorFlow是一个基于数据流图的开源机器学习框架,提供了丰富的工具和库来构建和训练各种深度
深度学习五大模型:CNN、Transformer、BERT、RNN、GAN详细解析
深度学习
卷积神经网络(ConvolutionalNeuralNetwork,CNN)原理:CNN主要由卷积层、池化层和全连接层组成。卷积层通过卷积核在输入数据上进行卷积运算,提取局部特征;池化层则对特征图进行下采样,降低特征维度,同时保留主要特征;全连接层将特征图展开为一维向量,并进行分类或回归计算。CNN利用卷积操作实现局部连接和权重共享,能够自动学习数据中的空间特征。适用场景:广泛应用于图像处理相关的
图像处理之白平衡(附源码)
FPGA工程狮-阿水
Python图像处理 图像处理 人工智能 python isp
图像处理之白平衡(附源码)概要白平衡(WhiteBalance)是图像处理和摄影中的一种技术,旨在消除由于光源色温差异导致的颜色偏差,使得图像中的白色和其他颜色呈现出自然、真实的效果。基本概念白平衡是调整图像中各个颜色通道(红色、绿色和蓝色)的亮度和色彩平衡,以消除由不同光源(如日光、白炽灯、荧光灯等)产生的色偏。其目的是让图像看起来像是在中性白光下拍摄的,从而确保图像中的白色看起来确实是白色,其
征程 6 VP简介与单算子实操
自动驾驶算法
1.如何理解VPVP,全称VisionProcess,指UCP中的视觉处理功能模块。Backends,指UCP框架中的可分配处理单元。VP模块主要用于模型的前后处理环节,在地平线统一架构中,多种硬件均已搭载了图像处理的算子,而VP模块将图像处理相关的硬件调用进行了封装,通过设置backend来选择不同的硬件方案(若不指定backend,UCP会自动适配负载更低的处理单元),从而平衡开发板负载。VP
OpenCV-Python实战(1)——OpenCV简介与图像处理基础
数字化转型2025
AI人工智能方向 opencv python 图像处理
OpenCV介绍Python安装OpenCV:对于Linux和Windows操作系统,首先需要在shell或cmd中运行以下命令安装NumPy:pipinstallnumpy。然后再安装OpenCV,可以选择仅安装主模块包:pipinstallopencv-python,或者安装完整包(包括主模块和附加模块):pipinstallopencv-contrib-python。OpenCV主要模块:O
美颜特效类sdk在智能硬件中的场景应用是怎样的?
Face Beauty美颜SDK
实时音视频 美颜sdk 视频特效美颜 智能硬件 实时互动 实时音视频
前言:FaceBeauty美颜特效SDK是由前相芯科技员工组建创办的新晋美颜厂商品牌,致力于为用户提供更真实自然的美颜效果,以极致性价比,降低高性能美颜的使用门槛。基于人脸识别和图像渲染技术,为客户提供美颜贴纸、美妆、美体、美发、哈哈镜、手势识别等人像人体特效功能,广泛应用于视频直播、一对一社交、短视频、美颜相机、智能硬件等场景。美颜特效类SDK在智能硬件中的应用场景日益广泛,结合实时图像处理、A
【工作记录】python使用总结
星光不负赶路人!
python
1.os库2.xlwt库3.xlrd库4.BeautifulSoup库5.panda库6.json库7.re正则8.ddddocr登录网站的时候,经常输入用户名和密码后会遇到验证码,ddddocr是一款强大的通用开源ocr识别库,具有高效、准确、易用的特点,广泛应用于图像处理和文字识别任务。importddddocrtry:login_page.wait_for_timeout(2000)#等待2
SciPy 安装指南
froginwe11
开发语言
SciPy安装指南引言SciPy是一个开源的Python科学计算库,它基于NumPy库,提供了大量的科学和工程计算功能。SciPy包含了用于优化、线性代数、积分、插值、信号和图像处理、特殊函数、统计分析、离散傅里叶变换等功能的模块。本文将详细介绍如何在您的系统上安装SciPy。安装前的准备在开始安装SciPy之前,请确保您的系统满足以下条件:您已安装Python,且版本在3.5或更高。您已安装pi
【新生必会】30个较难Python脚本,建议收藏。
.Boss.
信息可视化 python 人工智能 算法 开发语言 机器学习
本篇较难,建议优先学习上篇;20个硬核Python脚本-CSDN博客接上篇文章,对于Pyhon的学习,上篇学习的结束相信大家对于Pyhon有了一定的理解和经验,学习完上篇文章之后再研究研究剩下的30个脚本你将会有所成就!加油!目录21、数据库连接-SQLite22、图像处理-Pillow23、图形界面-Tkinter24、文本生成-Faker25、加密和解密-cryptography26、Sock
Spring4.1新特性——Spring MVC增强
jinnianshilongnian
spring 4.1
目录
Spring4.1新特性——综述
Spring4.1新特性——Spring核心部分及其他
Spring4.1新特性——Spring缓存框架增强
Spring4.1新特性——异步调用和事件机制的异常处理
Spring4.1新特性——数据库集成测试脚本初始化
Spring4.1新特性——Spring MVC增强
Spring4.1新特性——页面自动化测试框架Spring MVC T
mysql 性能查询优化
annan211
java sql 优化 mysql 应用服务器
1 时间到底花在哪了?
mysql在执行查询的时候需要执行一系列的子任务,这些子任务包含了整个查询周期最重要的阶段,这其中包含了大量为了
检索数据列到存储引擎的调用以及调用后的数据处理,包括排序、分组等。在完成这些任务的时候,查询需要在不同的地方
花费时间,包括网络、cpu计算、生成统计信息和执行计划、锁等待等。尤其是向底层存储引擎检索数据的调用操作。这些调用需要在内存操
windows系统配置
cherishLC
windows
删除Hiberfil.sys :使用命令powercfg -h off 关闭休眠功能即可:
http://jingyan.baidu.com/article/f3ad7d0fc0992e09c2345b51.html
类似的还有pagefile.sys
msconfig 配置启动项
shutdown 定时关机
ipconfig 查看网络配置
ipconfig /flushdns
人体的排毒时间
Array_06
工作
========================
|| 人体的排毒时间是什么时候?||
========================
转载于:
http://zhidao.baidu.com/link?url=ibaGlicVslAQhVdWWVevU4TMjhiKaNBWCpZ1NS6igCQ78EkNJZFsEjCjl3T5EdXU9SaPg04bh8MbY1bR
ZooKeeper
cugfy
zookeeper
Zookeeper是一个高性能,分布式的,开源分布式应用协调服务。它提供了简单原始的功能,分布式应用可以基于它实现更高级的服务,比如同步, 配置管理,集群管理,名空间。它被设计为易于编程,使用文件系统目录树作为数据模型。服务端跑在java上,提供java和C的客户端API。 Zookeeper是Google的Chubby一个开源的实现,是高有效和可靠的协同工作系统,Zookeeper能够用来lea
网络爬虫的乱码处理
随意而生
爬虫 网络
下边简单总结下关于网络爬虫的乱码处理。注意,这里不仅是中文乱码,还包括一些如日文、韩文 、俄文、藏文之类的乱码处理,因为他们的解决方式 是一致的,故在此统一说明。 网络爬虫,有两种选择,一是选择nutch、hetriex,二是自写爬虫,两者在处理乱码时,原理是一致的,但前者处理乱码时,要看懂源码后进行修改才可以,所以要废劲一些;而后者更自由方便,可以在编码处理
Xcode常用快捷键
张亚雄
xcode
一、总结的常用命令:
隐藏xcode command+h
退出xcode command+q
关闭窗口 command+w
关闭所有窗口 command+option+w
关闭当前
mongoDB索引操作
adminjun
mongodb 索引
一、索引基础: MongoDB的索引几乎与传统的关系型数据库一模一样,这其中也包括一些基本的优化技巧。下面是创建索引的命令: > db.test.ensureIndex({"username":1}) 可以通过下面的名称查看索引是否已经成功建立: &nbs
成都软件园实习那些话
aijuans
成都 软件园 实习
无聊之中,翻了一下日志,发现上一篇经历是很久以前的事了,悔过~~
断断续续离开了学校快一年了,习惯了那里一天天的幼稚、成长的环境,到这里有点与世隔绝的感觉。不过还好,那是刚到这里时的想法,现在感觉在这挺好,不管怎么样,最要感谢的还是老师能给这么好的一次催化成长的机会,在这里确实看到了好多好多能想到或想不到的东西。
都说在外面和学校相比最明显的差距就是与人相处比较困难,因为在外面每个人都
Linux下FTP服务器安装及配置
ayaoxinchao
linux FTP服务器 vsftp
检测是否安装了FTP
[root@localhost ~]# rpm -q vsftpd
如果未安装:package vsftpd is not installed 安装了则显示:vsftpd-2.0.5-28.el5累死的版本信息
安装FTP
运行yum install vsftpd命令,如[root@localhost ~]# yum install vsf
使用mongo-java-driver获取文档id和查找文档
BigBird2012
driver
注:本文所有代码都使用的mongo-java-driver实现。
在MongoDB中,一个集合(collection)在概念上就类似我们SQL数据库中的表(Table),这个集合包含了一系列文档(document)。一个DBObject对象表示我们想添加到集合(collection)中的一个文档(document),MongoDB会自动为我们创建的每个文档添加一个id,这个id在
JSONObject以及json串
bijian1013
json JSONObject
一.JAR包简介
要使程序可以运行必须引入JSON-lib包,JSON-lib包同时依赖于以下的JAR包:
1.commons-lang-2.0.jar
2.commons-beanutils-1.7.0.jar
3.commons-collections-3.1.jar
&n
[Zookeeper学习笔记之三]Zookeeper实例创建和会话建立的异步特性
bit1129
zookeeper
为了说明问题,看个简单的代码,
import org.apache.zookeeper.*;
import java.io.IOException;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ThreadLocal
【Scala十二】Scala核心六:Trait
bit1129
scala
Traits are a fundamental unit of code reuse in Scala. A trait encapsulates method and field definitions, which can then be reused by mixing them into classes. Unlike class inheritance, in which each c
weblogic version 10.3破解
ronin47
weblogic
版本:WebLogic Server 10.3
说明:%DOMAIN_HOME%:指WebLogic Server 域(Domain)目录
例如我的做测试的域的根目录 DOMAIN_HOME=D:/Weblogic/Middleware/user_projects/domains/base_domain
1.为了保证操作安全,备份%DOMAIN_HOME%/security/Defa
求第n个斐波那契数
BrokenDreams
今天看到群友发的一个问题:写一个小程序打印第n个斐波那契数。
自己试了下,搞了好久。。。基础要加强了。
&nbs
读《研磨设计模式》-代码笔记-访问者模式-Visitor
bylijinnan
java 设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
import java.util.ArrayList;
import java.util.List;
interface IVisitor {
//第二次分派,Visitor调用Element
void visitConcret
MatConvNet的excise 3改为网络配置文件形式
cherishLC
matlab
MatConvNet为vlFeat作者写的matlab下的卷积神经网络工具包,可以使用GPU。
主页:
http://www.vlfeat.org/matconvnet/
教程:
http://www.robots.ox.ac.uk/~vgg/practicals/cnn/index.html
注意:需要下载新版的MatConvNet替换掉教程中工具包中的matconvnet:
http
ZK Timeout再讨论
chenchao051
zookeeper timeout hbase
http://crazyjvm.iteye.com/blog/1693757 文中提到相关超时问题,但是又出现了一个问题,我把min和max都设置成了180000,但是仍然出现了以下的异常信息:
Client session timed out, have not heard from server in 154339ms for sessionid 0x13a3f7732340003
CASE WHEN 用法介绍
daizj
sql group by case when
CASE WHEN 用法介绍
1. CASE WHEN 表达式有两种形式
--简单Case函数
CASE sex
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他' END
--Case搜索函数
CASE
WHEN sex = '1' THEN
PHP技巧汇总:提高PHP性能的53个技巧
dcj3sjt126com
PHP
PHP技巧汇总:提高PHP性能的53个技巧 用单引号代替双引号来包含字符串,这样做会更快一些。因为PHP会在双引号包围的字符串中搜寻变量, 单引号则不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的函数译注: PHP手册中说echo是语言结构,不是真正的函数,故把函数加上了双引号)。 1、如果能将类的方法定义成static,就尽量定义成static,它的速度会提升将近4倍
Yii框架中CGridView的使用方法以及详细示例
dcj3sjt126com
yii
CGridView显示一个数据项的列表中的一个表。
表中的每一行代表一个数据项的数据,和一个列通常代表一个属性的物品(一些列可能对应于复杂的表达式的属性或静态文本)。 CGridView既支持排序和分页的数据项。排序和分页可以在AJAX模式或正常的页面请求。使用CGridView的一个好处是,当用户浏览器禁用JavaScript,排序和分页自动退化普通页面请求和仍然正常运行。
实例代码如下:
Maven项目打包成可执行Jar文件
dyy_gusi
assembly
Maven项目打包成可执行Jar文件
在使用Maven完成项目以后,如果是需要打包成可执行的Jar文件,我们通过eclipse的导出很麻烦,还得指定入口文件的位置,还得说明依赖的jar包,既然都使用Maven了,很重要的一个目的就是让这些繁琐的操作简单。我们可以通过插件完成这项工作,使用assembly插件。具体使用方式如下:
1、在项目中加入插件的依赖:
<plugin>
php常见错误
geeksun
PHP
1. kevent() reported that connect() failed (61: Connection refused) while connecting to upstream, client: 127.0.0.1, server: localhost, request: "GET / HTTP/1.1", upstream: "fastc
修改linux的用户名
hongtoushizi
linux change password
Change Linux Username
更改Linux用户名,需要修改4个系统的文件:
/etc/passwd
/etc/shadow
/etc/group
/etc/gshadow
古老/传统的方法是使用vi去直接修改,但是这有安全隐患(具体可自己搜一下),所以后来改成使用这些命令去代替:
vipw
vipw -s
vigr
vigr -s
具体的操作顺
第五章 常用Lua开发库1-redis、mysql、http客户端
jinnianshilongnian
nginx lua
对于开发来说需要有好的生态开发库来辅助我们快速开发,而Lua中也有大多数我们需要的第三方开发库如Redis、Memcached、Mysql、Http客户端、JSON、模板引擎等。
一些常见的Lua库可以在github上搜索,https://github.com/search?utf8=%E2%9C%93&q=lua+resty。
Redis客户端
lua-resty-r
zkClient 监控机制实现
liyonghui160com
zkClient 监控机制实现
直接使用zk的api实现业务功能比较繁琐。因为要处理session loss,session expire等异常,在发生这些异常后进行重连。又因为ZK的watcher是一次性的,如果要基于wather实现发布/订阅模式,还要自己包装一下,将一次性订阅包装成持久订阅。另外如果要使用抽象级别更高的功能,比如分布式锁,leader选举
在Mysql 众多表中查找一个表名或者字段名的 SQL 语句
pda158
mysql
在Mysql 众多表中查找一个表名或者字段名的 SQL 语句:
方法一:SELECT table_name, column_name from information_schema.columns WHERE column_name LIKE 'Name';
方法二:SELECT column_name from information_schema.colum
程序员对英语的依赖
Smile.zeng
英语 程序猿
1、程序员最基本的技能,至少要能写得出代码,当我们还在为建立类的时候思考用什么单词发牢骚的时候,英语与别人的差距就直接表现出来咯。
2、程序员最起码能认识开发工具里的英语单词,不然怎么知道使用这些开发工具。
3、进阶一点,就是能读懂别人的代码,有利于我们学习人家的思路和技术。
4、写的程序至少能有一定的可读性,至少要人别人能懂吧...
以上一些问题,充分说明了英语对程序猿的重要性。骚年
Oracle学习笔记(8) 使用PLSQL编写触发器
vipbooks
oracle sql 编程 活动 Access
时间过得真快啊,转眼就到了Oracle学习笔记的最后个章节了,通过前面七章的学习大家应该对Oracle编程有了一定了了解了吧,这东东如果一段时间不用很快就会忘记了,所以我会把自己学习过的东西做好详细的笔记,用到的时候可以随时查找,马上上手!希望这些笔记能对大家有些帮助!
这是第八章的学习笔记,学习完第七章的子程序和包之后