OpenCV(一)之图像基本操作

HDR图像文件格式之Radiance RGBE详细解析 RGBE文件的扩展名为.hdr,RGBE正式名称为RadianceRGBE格式。这个本来是BR、FR等作为radiance材质的一种格式,也叫做radiancemap,后来成为流行的一种HDR格式。所谓E,就是指数。RadianceRGBE文件每个通道为8bitBYTE数据类型,4个通道一共是32bit。RGBE可以使用RLE压缩编码压缩,也可以不压缩。由文件头、RGBE数据组成。 文件头如下:... 阅读详情

什么是openCV?

OpenCV的全称是:Open Source Computer Vision Library。

OpenCV是一个基于(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。


Basic Operation系列

从openCV库的最基本操作开始,主要包括图片读取、图片显示、图片输出、视频读取、图灰值化、图像截取、通道提取、通道整合、边界填充、图像加值、图像融合等等基本的操作。

Basic Operation-导入工具包

#导入所需的工具包
import cv2
import matplotlib.pyplot as plt

Basic Operation-读取图片

function:
def imread(filename, flags=None):
	从文件加载图像。
	函数imread从指定文件加载图像并返回它。如果无法读取图像(由于文件丢失,权限不正确,格式不受支持或无效),
	该函数返回一个空矩阵(Mat :: data == NULL)。
	
	目前,支持以下文件格式:
	Windows位图 - * .bmp,* .dib(始终支持)
	JPEG文件 - * .jpeg,* .jpg,*。jpe(参见注释部分)
	JPEG 2000文件 - * .jp2(参见注释部分)
	便携式网络图形 - * .png(参见“ 注释”部分)
	WebP - * .webp(参见Notes部分)
	便携式图像格式 - * .pbm,* .pgm,* .ppm * .pxm,* .pnm(始终支持)
	太阳栅格 - * .sr,* .ras(始终支持)
	TIFF文件 - * .tiff,* .tif(参见注释部分)
	OpenEXR图像文件 - * .exr(参见注释部分)
	Radiance HDR - * .hdr,* .pic(始终支持)
	Gdal支持的栅格和矢量地理空间数据(请参阅“ 注释”部分)

	参数
	filename	要加载的文件的名称。
	flags	可以采用cv :: ImreadModes值的标志

Eg.

#读取猫咪的图片
img = cv2.imread("cat.jpg")
#尝试输出
print(img)

Return.
The function imread loads an image from the specified file and returns it.
If the image cannot be read (because of missing file, improper permissions, unsupported or invalid format), the function returns an empty matrix ( Mat::data==NULL ).

Result.

[[[142 151 160]
[146 155 164]
[151 160 170]
…
[[154 178 190]
[154 178 190]
[121 145 157]
…
[183 198 200]
[128 143 145]
[127 142 144]]]

Note.

1.The function determines the type of an image by the content, not by the file extension.
2.In the case of color images, the decoded images will have the channels stored in B G R order.
3.imread()函数中ImreadModes参数有哪些作用?
ImreadModes


Basic Operation-显示图片

function:
def imshow(filename, image):
	在指定的窗口中显示图像。
	函数imshow在指定的窗口中显示图像。
	如果窗口是使用cv :: WINDOW_AUTOSIZE标志创建的,则图像将以原始大小显示,但仍然受到屏幕分辨率的限制。
	否则,缩放图像以适合窗口。
	该功能可能会缩放图像,具体取决于其深度:
	如果图像是8位无符号,则按原样显示。
	如果图像是16位无符号或32位整数,则像素除以256.即,值范围[0,255 * 256]被映射到[0,255]。
	如果图像是32位浮点,则像素值乘以255.即,值范围[0,1]映射到[0,255]。
	如果窗口是使用OpenGL支持创建的,cv :: imshow也支持ogl :: Buffer,ogl :: Texture2D和cuda :: GpuMat作为输入。
	如果在此函数之前未创建窗口,则假定使用cv :: WINDOW_AUTOSIZE创建窗口。
	如果需要显示大于屏幕分辨率的图像,则需要在imshow之前调用namedWindow(“”,WINDOW_NORMAL)。

Eg.

#显示图片函数imshow(名称,图片)
cv2.imshow('image',img)
#等待时间
cv2.waitKey(1000)
#自动关闭窗口
cv2.destroyAllWindows()

Result.
cat.jpg

Note.

1.此函数后面应跟有waitKey函数,该函数显示指定毫秒的图像,否则,它将不显示图像。
例如,waitKey(0)将无限显示窗口,直到任何按键(适用于图像显示)。
waitKey(25)将显示一个25毫秒的帧,之后显示将自动关闭。(如果你把它放在一个循环中来阅读视频,它将逐帧显示视频)
2.可以创建多个不同的窗口,但必须赋予不一样的filename
3.可以用destroyAllWindows()函数关闭所有窗口


Basic Operation-输出图片

function:
def imwrite(filename, img, params=None):
	将图像保存到指定的文件。
	函数imwrite将图像保存到指定的文件。
	基于文件扩展名选择图像格式(有关扩展名列表,请参阅cv :: imread)。
	使用此功能时,只能保存8位(或PNG,JPEG 2000和TIFF情况下的16位无符号(CV_16U))单通道,
	或者3通道(带'BGR'通道顺序)图像。
	如果格式,深度或通道顺序不同,请使用Mat :: convertTo和cv :: cvtColor在保存之前进行转换。
	或者,使用通用FileStorage I / O函数将图像保存为XML或YAML格式。
	使用此功能可以使用Alpha通道存储PNG图像。为此,创建8位(或16位)4通道图像BGRA,其中alpha通道最后。
	完全透明的像素应将alpha设置为0,完全不透明的像素应将alpha设置为255/65535。

	参数
	filename 文件名。
	IMG	要保存的图像。
	PARAMS	编码为对的格式特定参数(paramId_1,paramValue_1,paramId_2,paramValue_2,...)

Eg.

#保存输出结果,imwrite(图片名称,图片)
cv2.imwrite('mycat.png',img1)

Note.
ImwriteFlags


Basic Operation-读取视频

function:
def VideoCapture(source):
	@param source video.

Eg.

#读取视频
vc = cv2.VideoCapture('test.mp4')
#检查是否打开摄像头
if vc.isOpened():
    open, frame = vc.read()
else:
    open=False
#用一个while循环对视频进行抽帧处理
while open:
    ret,frame = vc.read()
    if frame is None:
        break
    if ret == True:
        gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY) #这里使用cv2的BGR2GRAY把图像转为灰色
        cv2.imshow('result',gray)
        if cv2.waitKey(10) & 0xFF==27: #记录按键ESC退出键的ASCII码为27
            break
#释放视频
vc.release()
cv2.destroyAllWindows()

Note.
1.将视频读入后,逐帧处理,就将其分治为一张图像的问题,假如说一张图像的维度为(px,px,channel)现在可以认为是(px,px,channel,time)


Basic Operation-图灰值化

Eg.

#在读取图片时,将其flags赋为IMREAD_GRAYSCALE
img = cv2.imread('cat.jpg',cv2.IMREAD_GRAYSCALE)

Result.

[[153 157 162 … 174 173 172]
[119 124 129 … 173 172 171]
[120 124 130 … 172 171 170]
…
[187 182 167 … 202 191 170]
[165 172 164 … 185 141 122]
[179 179 146 … 197 142 141]]

Note.
1.图片灰值化之后读取的matrix是一个二维matrix,在源码中查看IMREAD_GRAYSCALE的值为0


Basic Operation-图像截取

Eg.

#截取部分图像数据 img[像素段,像素段]
cat = cv2.cvtColor(img[0:100,0:100],cv2.COLOR_BGR2RGB)
plt.imshow(cat)
plt.show()

Result.
截取
Note.
1.可以直接在matrix中,定义下标区间,截取图像


Basic Operation-通道提取

function:
def split(m, mv=None):
	@param m input multi-channel array.
    @param mv output vector of arrays; the arrays themselves are reallocated, if needed.

Eg.

#颜色通道提取
b,g,r = cv2.split(img)
plt.subplot(131)
plt.imshow(b)
plt.title("B channel")

plt.subplot(132)
plt.imshow(g)
plt.title("G channel")

plt.subplot(133)
plt.imshow(r)
plt.title("R channel")

plt.show()

Note.
1.通过split()函数可以读取图像的BGR channel ,需要注意的地方是,一般情况下其他图像处理库都是RGB或许需要进行转换


Basic Operation-通道整合

function:
def merge(mv, dst=None): 
	@param mv input vector of matrices to be merged; all the matrices in mv must have the same
    size and the same depth.
    @param dst output array of the same size and the same depth as mv[0]; The number of channels will
    be the total number of channels in the matrix array.

Eg.

#整合BGR通道
img = cv2.merge((b,g,r))
print(img.shape)

#观察三个Channel各自的表现情况
#BGR 保留R
cur_img = img.copy()
cur_img[:,:,0]=0 #B=0
cur_img[:,:,1]=0 #G=0
cv2.imshow('cat',cur_img)
cv2.waitKey(1000)

#BGR 保留G
cur_img = img.copy()
cur_img[:,:,0]=0 #B=0
cur_img[:,:,2]=0 #R=0
cv2.imshow('cat',cur_img)
cv2.waitKey(1000)

#BGR 保留B
cur_img = img.copy()
cur_img[:,:,1]=0 #G=0
cur_img[:,:,2]=0 #R=0
cv2.imshow('cat',cur_img)
cv2.waitKey(1000)

Result.
BGR
Note.
1.需要一样的Size和depth


Basic Operation-边界填充

function:
def copyMakeBorder(src,top, bottom, left, right ,borderType,value):
	@param src Source image
    @param top The depth at which the image expands to the top
    @param bottom The depth at which the image expands to the bottom
    @param left The depth at which the image expands to the left
    @param right The depth at which the image expands to the right
    @param borderType Type of boundary
    @param value Specify a constant when the boundary fill type is constant

Eg.

#边界填充
top,bottom,left,right = (50,50,50,50)
borderType1 = cv2.BORDER_REPLICATE
borderType2 = cv2.BORDER_REFLECT
borderType3 = cv2.BORDER_REFLECT_101
borderType4 = cv2.BORDER_WRAP
borderType5 = cv2.BORDER_CONSTANT
img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
#填充的方式
replicate = cv2.copyMakeBorder(img,top,bottom,left,right,borderType=borderType1)
reflect = cv2.copyMakeBorder(img,top,bottom,left,right,borderType=borderType2)
reflect_101 = cv2.copyMakeBorder(img,top,bottom,left,right,borderType=borderType3)
wrap = cv2.copyMakeBorder(img,top,bottom,left,right,borderType=borderType4)
constant = cv2.copyMakeBorder(img,top,bottom,left,right,borderType=borderType5,value=1)

plt.subplot(231)
plt.imshow(img,'gray')
plt.title('ORIGINAL')

plt.subplot(232)
plt.imshow(replicate,'gray')
plt.title('replicate')

plt.subplot(233)
plt.imshow(reflect,'gray')
plt.title('reflect')

plt.subplot(234)
plt.imshow(reflect_101,'gray')
plt.title('reflect_101')

plt.subplot(235)
plt.imshow(wrap,'gray')
plt.title('wrap')

plt.subplot(236)
plt.imshow(constant,'gray')
plt.title('constant')

plt.show()

Result.
compare
Note.
填充类型有如下几种:
1.cv2.BORDER_REPLICATE 直接使用边界的颜色填充 aaaaaaa | abcdefg | ggggggg
2.cv2.BORDER_REFLECT 类型镜子的反射一样,以边界为线进行倒映 gfedcba | abcdefg | gfedcba
3.cv2.BORDER_REFLECT_101 与reflect方法类似,不过边界点去掉其一 gfedcb | abcdefg | fedcba
4.cv2.BORDER_WRAP 外包装法,按照图片进行循环填充 abcdefg | abcdefg | abcdefg
5.cv2.BORDER_CONSTANT 常量填充 0000000 | abcdefg | 0000000


Basic Operation-图像加值

Eg.

#matrix数值的计算
img_cat = cv2.imread('cat.jpg')
img_dog = cv2.imread('dog.jpg')

#相当于每个元素都加上某个数值
img_cat2 = img_cat + 10

print("cat.jpg的matrix输出为(只输出Bchannel的前5行):")
print(img_cat[0:5,:,0])
print("加10之后cat.jpg的matrix输出为(只输出Bchannel的前5行):")
print(img_cat2[0:5,:,0])

#两个图片相加需要一样的维度和,两个matrix相加对应的元素相加后,取余255得到值,并填入
img = img_cat+img_cat2

print("前后两个matrix相加的输出为:")
print(img[0:5,:,0])

#使用cv2中自带的add函数,每个元素对应相加后不会进行取余,x>=255 输出255 反之保持原值
print("使用cv2库中输出为:")
print(cv2.add(img_cat,img_cat2)[0:5,:,0])

Result.

cat.jpg的matrix输出为(只输出Bchannel的前5行):
[[142 146 151 … 156 155 154]
[108 112 118 … 155 154 153]
[108 110 118 … 156 155 154]
[139 141 148 … 156 155 154]
[153 156 163 … 160 159 158]]
加10之后cat.jpg的matrix输出为(只输出Bchannel的前5行):
[[152 156 161 … 166 165 164]
[118 122 128 … 165 164 163]
[118 120 128 … 166 165 164]
[149 151 158 … 166 165 164]
[163 166 173 … 170 169 168]]
前后两个matrix相加的输出为:
[[ 38 46 56 … 66 64 62]
[226 234 246 … 64 62 60]
[226 230 246 … 66 64 62]
[ 32 36 50 … 66 64 62]
[ 60 66 80 … 74 72 70]]
使用cv2库中输出为:
[[255 255 255 … 255 255 255]
[226 234 246 … 255 255 255]
[226 230 246 … 255 255 255]
[255 255 255 … 255 255 255]
[255 255 255 … 255 255 255]]

Note.
1.使用得到的matrix矩阵加上一个常量,为matrix中每一个元素加上常量然后输出
2.matrix的相加应该有一样的维度
3.单通道图层相加后,数值大于255,会做取余255的操作
4.用自带的add()函数相加,结果大于等于255则输出255,,反之输出原值


Basic Operation-图像融合

function:
def resize(src, dsize, dst=None, fx=None, fy=None, interpolation=None):
	调整图像大小。
	函数resize将图像src的大小调整为或者达到指定的大小。
	请注意,如果不考虑初始dst类型或大小,可以调用以下方法:
//明确指定dsize = dst.size(); fx和fy将从中计算出来。
resize(src,dst,dst.size(),0,0,interpolation);
	相反,大小和类型从派生src,dsize,fx,和fy,如果要调整src的大小以使其适合预先创建的dst,可以按如下方式调用该函数:
//指定fx和fy并让函数计算目标图像大小。
调整大小(src,dst,Size(),0.5,0.5,插值);
def addWeighted(src1, alpha, src2, beta, gamma, dst=None, dtype=None):
	计算两个数组的加权和。

Eg.

#对cat图片进行缩放
img1 = cv2.resize(img_cat,(400,400),fx=2,fy=2)
img2 = cv2.resize(img_cat,(0,0),fx=1,fy=3)
img3 = cv2.resize(img_cat,(0,0),fx=3,fy=3)

#创建一个新的图像集,对比更明显
plt.subplot(141)
plt.imshow(img_cat)
plt.subplot(142)
plt.imshow(img1)
plt.subplot(143)
plt.imshow(img2)
plt.subplot(144)
plt.imshow(img3)

#将dog图片的像素改为与cat图像一致
img_dog = cv2.resize(img_dog,(500,414))
plt.imshow(cv2.addWeighted(img_cat,0.3,img_dog,0.3,0))
plt.show()

Result.
ronghe
Note.
1.在rize()中的参数类型有以下需要注意的地方:
@param dst 目标图像,当@param dsize不为0的时候,dst目标图像的size则为dsize所定义的大小

2.dsize和(Fx,Fy)二者不可都为零,当dsize为0的时候,相对应的dst目标图像的size计算方法如下所示:
d s i z e = S i z e ( R o u n d ( F x ∗ S r c . c o l s ) , R o u n d ( F y ∗ S r c . r o w s ) ) dsize = Size(Round(Fx*Src.cols),Round(Fy*Src.rows)) dsize=Size(Round(Fx∗Src.cols),Round(Fy∗Src.rows))

3.Fx是水平轴上的比例因子,当其为0时,按以下公式进行计算:
( d o u b l e ) d s i z e . w i d t h / s r c . c o l s (double)dsize.width/src.cols (double)dsize.width/src.cols

4.Fy是垂直轴上的比例因子,当其为0时,按以下公式进行计算:
( d o u b l e ) d s i z e . h e i g h t / s r c . r o w s (double)dsize.height/src.rows (double)dsize.height/src.rows

5.interpolation - 插值方法,共有5种:
1)INTER_NEAREST - 最近邻插值法
2)INTER_LINEAR - 双线性插值法(默认)
3)INTER_AREA - 基于局部像素的重采样(resampling using pixel area relation)
对于图像抽取(image decimation)来说,这可能是一个更好的方法。但如果是放大图像时,它和最近邻法的效果类似。
4)INTER_CUBIC - 基于4x4像素邻域的3次插值法
5)INTER_LANCZOS4 - 基于8x8像素邻域的Lanczos插值
要缩小图像,通常会使用#INTER_AREA插值,而放大的图像,通常会使用C#INTER_CUBIC(速度较慢)或#INTER_LINEAR(速度虽快,但效果也较为可观)。

6.addWeighted函数中的dst输出图像的像素点计算方式如下所示:
d s t = s r c 1 ∗ α + s r c 2 ∗ β + γ ; dst = src1*\alpha + src2*\beta + \gamma; dst=src1∗α+src2∗β+γ;

7.addWeighted函数中的dtype参数,可以输出dst的depth,当设置为-1时,dst.depth =src1.depth


补充点,及细节知识

1.在plt.imshow()函数中:
def imshow(X, cmap=None, norm=None, aspect=None, interpolation=None, alpha=None,vmin=None, vmax=None, origin=None, extent=None, shape=None,filternorm=1, filterrad=4.0, imlim=None, resample=None, url=None,hold=None, data=None, **kwargs):
函数的参数有很多,关于其中一项的cmap图谱的可选项,做补充,
cmap: 颜色图谱(colormap), 默认绘制为RGB(A)颜色空间

颜色图谱描述
autumn红-橙-黄
bone黑-白,x线
cool青-洋红
copper黑-铜
flag红-白-蓝-黑
gray黑-白
hot黑-红-黄-白
hsvhsv颜色空间, 红-黄-绿-青-蓝-洋红-红
inferno黑-红-黄
jet蓝-青-黄-红
magma黑-红-白
pink黑-粉-白
plasma绿-红-黄
prism红-黄-绿-蓝-紫-…-绿模式
spring洋红-黄
summer绿-黄
viridis蓝-绿-黄
winter蓝-绿

2.在cv2中,不止读取图像颜色通道不是常规的RGB顺序而是BGR,对于图像的weight和height也是反序


3.在底下会补充更多关于resize()函数中插值interpolation的思考和分析


END

(一)opencv入门之图像的基本操作——图像的读取、保存和图像缩放的操作 本人是零基础的小白,现在从零开始学习opencv,这是学习的一些简单的笔记,如有错误请指正。 编译环境:vs2017 Windows x64 入门opencv时,必须要了解几个常用的头文件及其它们的作用。在写代码头文件出错时,若不知道头文件的作用,就很难去处理红线错误。 opencv几个常用的头文件: #include <core.hpp> //包含了opencv的基本数据结构,图... 阅读详情

相关推荐

数字图像处理(实践篇)三 将两张图像按照指定比例融合

数字图像处理(实践篇)三 将两张图像按照指定比例融合

静谧、淡雅 1403

opencv-多通道图像混合

#include #include #include //-----------------------------------【命名空间声明部分】--------------------------------------- // 描述:包含程序所使用的命名空间 //-------------------------------------------------------------

hb707934728的博客 1076

k8s部署 普罗米修斯(Prometheus)监控

Prometheus是一个开源的服务监控系统和时序数据库其提供了通用的数据模型和快捷数据采集、存储和查询接口它的核心组件Prometheus服务器定期从静态配置的监控目标或者基于服务发现自动配置的目标中进行拉 取数据新拉取到啊的 数据大于配置的内存缓存区时,数据就会持久化到存储设备当中。

D2961953033的博客 3860

OpenCv矩阵操作

OpenCv矩阵操作 有很多函数有mask,代表掩码,如果某位mask是0,那么对应的src的那一位就不计算,mask要和矩阵/ROI/的大小相等 大多数函数支持ROI,如果图像ROI被设置,那么只处理ROI部分 少部分函数支持COI,如果COI设置,只处理感兴趣的通道 矩阵逻辑运算 void cvAnd(const CvArr* src1,const CvArr* src2,

6534

逆向工程实战:解密AppleAccount的X-MMe-Nas-Qualify签名生成机制

本文通过逆向工程实战,详细解析了AppleAccount服务中X-MMe-Nas-Qualify签名的生成机制。作者利用Frida进行动态追踪定位签名源头,结合IDA Pro进行静态分析,并借助LLDB动态调试还原核心算法。文章最终分享了如何独立于苹果官方库,通过Python代码复现签名算法,为自动化测试和深度交互苹果服务的开发者提供了关键技术路径。

weixin_29323049的博客 709

千兆网口电路设计中的EMC防护与TVS选型实战

本文深入探讨了千兆网口电路设计中面临的EMC挑战,并提供了TVS二极管选型的实战指南。文章分析了ESD、浪涌和EFT等主要威胁,重点阐述了如何根据工作电压、钳位电压和关键的低结电容等参数为PHY芯片选择匹配的TVS器件,以确保在严苛电磁环境下实现可靠的信号完整性与防护。

m3n5b7v8c9x的博客 531

PIL.Image cv2读取图片,cv2 plt展示图片(含详细代码)

PIL.Image cv2读取图片,cv2 plt展示图片(含详细代码)

m0_63077499的博客 2792

【王道训练营 C/C++方向基础 60 题(31-40)】

王道训练营 C/C++方向基础 60 题(31-40)

qq_55805517的博客 3068

OpenCV——图像基本操作(一)

由于HSV颜色空间更接近人类视觉的直观感觉,因此可以在转换成HSV颜色空间后根据色彩对图像进行分割。如下图所示,图中是一副色盲测试图,如果转换成灰度图后只能看到一些灰色的圆点,则无法将中央绿色的。根据不同的应用场景,有时需要将彩色图像的3种颜色通道拆开后分别进行操作,另一些时候则需要把独立通道的图片合而为一,此时就会用到OpenCV中的split()和merge()函数。在调用imshow()函数后,需要通过waitKey()函数告知系统图像在屏幕上停留的时间,如果不用这个函数,则屏幕上不会显示图像。

吴声子夜歌的博客 1237

VECTOR硬件VN1600系列对比:VN1610、VN1611、VN1630A、VN1640A、VN1630log、VN1670

VN16系列说不清道不明的区别和关系

AmorRun的博客 2万+

基于sklearn实现LDA主题模型(附实战案例)

目录LDA主题模型1.LDA主题模型原理2.LDA主题模型推演过程3.sklearn实现LDA主题模型(实战)3.1数据集介绍3.2导入数据3.3分词处理 3.4文本向量化3.5构建LDA模型3.6LDA模型可视化 3.7困惑度 其实说到LDA能想到的有两个含义,一种是线性判别分析(Linear Discriminant Analysis),一种说的是概率主题模型:隐含狄利克雷分布(Latent Dirichlet Allocation,简称LDA)。 现在讨论的是主题模型

m0_64336780的博客 2万+

数字图像处理OpenCV——实验一 熟悉OpenCV环境和基本操作

实验一 熟悉OpenCV环境和基本操作 熟悉OpenCV运行环境,了解图像的基本操作及直方图均衡化。 利用OpenCV产生一幅图像,尺寸为200*240,三通道,其中某一块为红色,其它皆为黑色,示例图如下。 对一副图像进行直方图均衡化处理。要求自行编写直方图均衡化函数,实现图像灰度均衡的算法步骤如下: (1) 统计直方图数组,用一个数组p记录p[i]; (2) i从1开始,令S[i]=S[i-1]+p[i],S[0]=p[0]; (3) 一个数组L记录新的S索引值,即令L[i]=S[i]*(256-1);

加载中....... 2916

【天气雷达】双偏振产品-差分反射率ZDR详解

双偏振产品-差分反射率ZDR详解。

珞瑜的博客 5412

Opencv 图像入门一之基本操作

本节你将学习到如何读取图像,如何显示图像以及如何保存图像 1、读取图像 使用cv.imread()函数读取图像。图像应该在工作目录或图像的完整路径应给出。 第二个参数是一个标志,它指定了读取图像的方式。 cv.IMREAD_COLOR: 加载彩色图像。任何图像的透明度都会被忽视。它是默认标志。 cv.IMREAD_GRAYSCALE:以灰度模式加载图像 cv.IMREAD_UNCHANGED:加载...

welcome_yu的博客 416

YOLOv8优化:特征融合 | 金字塔稀疏 Transformer(PST)——一个轻量级、即插即用的模块 | 25年7月最新成果

将 PST 嵌入当前最先进的实时检测模型(YOLOv11-N/S/M)后,在 MS COCO 上的 mAP 分别提升 0.9%、0.5%、0.4%,而延迟增加极小。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 613

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【Opencv入门到项目实战】(一):Opencv安装及图像基本操作

OpenCV是一个强大的计算机视觉库,它提供了丰富的函数和工具,可用于图像处理、特征提取、目标检测、机器学习等各种计算机视觉任务。我们主要介绍了Opencv环境配置、基本的图像和视频读取、读取感兴趣的部分图像、图像填充、以及在Opencv中的基本数值计算和图像融合。

阿里云专家博主、数据科学领域优质创作者、统计er在读 1万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

opencv学习(一)图像的基本操作

OpenCV学习

abc1234abcdefg的博客 2544

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

【Opencv-Python】数字图像处理(一) —— 图像的基本操作

本文介绍了在Python中使用opencv-python库处理图像的基本操作。通过本文可以掌握这些技能,可以读取不同格式的图像,获取图像信息,调整图像大小、色彩转换,按照指定要求存储图像,以及实现图像间的转化,包括图像坐标变换和色彩空间转化等操作。

weixin_64876095的博客 7205

Opencv-Python学习(一)———图像的基本操作

一、Opencv简介 OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。OpenCV用C++语言编写,它具有C ++,Python,Java和MATLAB接口,并支持Windows,Linux,Android和Mac OS

随便写写东西 4473

openCV (一) 图像的基本操作 学习回顾记录

文章目录图像基本操作一、图像读取cv2.imread( )二、图像显示读取灰度图像 图像基本操作 一、图像读取 cv2.imread( ) - cv.IMREAD_COLOR:彩色图像 - cv2.IMREAD_GRAYSCALE:灰色图像 - 读取的格式是 BGR - img.shape H、W、C import cv2 # opencv 读取格式是 BGR import matplotlib.pyplot as plt import numpy as np img = cv2.imread(

深度菜鸡-达闻西的博客 1312

opencv-python图像基本操作(一)

图像基本操作 数据读取-图像 cv2.IMREAD_COLOR:彩色图像 cv2.IMREAD_GRAYSCALE:灰度图像 mport cv2 #opencv读取的格式是BGR import matplotlib.pyplot as plt import numpy as np %matplotlib inline img=cv2.imread(‘cat.jpg’) #%% img #%% #图像的显示,也可以创建多个窗口 cv2.imshow(‘image’,img) 等待时间,毫秒级,0表示任意键

weixin_44116017的博客 279

OpenCV入门学习(一):图像的基本操作

本文是OpenCV系列教程的第一篇。我们将从最底层开始,理解OpenCV的核心数据结构、色彩空间原理以及图像的基础变换操作。这些知识是所有高阶计算机视觉应用的基石,**必须熟练掌握**。本阶段不涉及复杂的特征提取或目标检测,而是打好地基,为后续学习铺路。

2301_79882046的博客 340

python图像处理opencv笔记(一):图像基本操作

opencv-python安装 目前如果不指定版本,默认都是安装opencv 4.2以上版本的简化版,安装方式如下: pip install opencv-python # 如果上面的安装失败,请添加阿里或者清华源 pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple # 阿里 http://mirrors.aliyun.com/pypi/simple 而如果还是出现http time out问题,请去python离线包

submarineas的博客 903

OpenCV图像处理基本操作 Open_CV系列(一)

欢迎大家前来学习OpenCV图像处理基本操作 - Open_CV系列博文 1.安装OpenCV-Contrib-Python库 2.读取图片文件像素值数组 3.显示图像 ①cv2.imshow() ②cv2.waitKey() ③cv.destoryAllWindows() 4. 保存图像 imwrite() 5.获取图像的属性...

侯小啾技术博客 3万+

OPENCV学习笔记一:图像基本操作

学习opencv第一天: 1.对图像基本操作: 图像读取: cv.imread("文件位置:D:/python/picture.png" ) 图像显示: import cv2 #图像的载入 img = cv2.imread(‘russia2018.jpg’) #创建窗口 cv2.namedWindow(‘image’) #图像显示 cv2.imshow(‘image’,img) #等待2000ms...

qq_42381603的博客 320

OpenCV计算机视觉(一) —— 图像的基本操作

主要讲述了OpenCV的一些基本操作,虽然基本但是至关重要,是很多计算机视觉算法必须使用的函数,希望大家重视起来

涵涵啦啦啦的博客 3192
下一篇: OpenCV(二)之阈值与平滑处理
DeepLearningJay
博客等级 码龄7年 3064粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值