OpenCV基本操作

OpenCV基本操作


图像读取

cv.imread

1读取的方式分别有彩色模式加载图像,任何图像的透明度都将被忽略。这是默认参数;2以灰度模式加载图像;3包括alpha通道的加载图像模式。

可以分别使用1,0,-1来代替上面三个标志。

在图像读取的过程中,如果加载路径有错误,并不会报错,而是返回一个空值。并在下一次调用时报错。

显示图像

cv.imshow(显示图像的窗口名称,以字符串类型表示;要加载的图像)

注意:在调用显示图像的API后,要调用waitKey给图像绘制留下时间,否则窗口会出现无响应情况,并且图像无法显示出来。

图像保存

cv.imwrite(文件名要保存在哪里;要保存的图像)

几何图形绘制

绘制直线

cv.line(img,start,end,color,thickness)

img:要绘制直线的图像

start,end:直线的起点和终点。

color:线条的颜色

thickness:线条的宽度

绘制圆形

cv.circle(img,centerpoint,r,color,thickness)

img:要绘制圆形的图像

centerpoint,r:圆心和半径

color:线条的颜色

thickness:线条宽度,为-1时生成闭合图案并填充颜色

绘制矩形

cv.rectangle(img,leftupper,rightdown,color,thickness)

img:要绘制矩形的图像

leftupper,rightdown:矩形的左上角和右下角坐标

color:线条的颜色

thickness:线条的宽度

向图像中添加文字

cv.putText(img,text,station,font,fontsize,color,thickness,cv.LINE_AA)

img:图像

text:要写入的文本数据

station:文本的放置位置

font:字体

fontsize:字体大小

获取并修改图像中的像素点

通过行列坐标值获取该像素点的像素值。对于BGR图像,它返回一个蓝绿红值的数组。对于灰色图像,仅返回相应的强度值。使用相同的方法对像素值进行修改。

获取图像的属性

图像属性包含行数,列数,通道数,图像数据类型,像素数等。

形状:img.shape

图像大小:img.size

数据类型:img.dtype

图像通道的拆分与合并

拆分:b,g,r=cv.split(img)

合并:img=cv.merge((b,g,r))

色彩空间的改变

OpenCV中有150多种颜色空间转换方法。最广泛使用的转换方法有两种,BGR和灰度图、BGR和HSV之间的转换。

cv.cvtColor(需要转换的图片,转换的标志)

标志包括:cv.COLOR_BGR2GRAY;cv.COLOR_BGR2HSV

算数操作

图像的加法:cv.add(a,b)。注意在操作时需要保证a,b的尺寸相同。

图像的混合加法:对两幅图像使用不同的权重相加。函数是cv.addWeighted(a,wa,b,wb,c)

a:图像a。

wa:图像a的权重。

b:图像b。

wb:图像b的权重。

c:常数。

几何变换

图像缩放:cv.resize(src,dsize,fx=0,fy=0,interpolation=cv.INTER_LINEAR)

src:输入图像。

dsize:绝对尺寸,直接指定调整后图像的大小。

fx,fy:相对尺寸,将dsize设置为None,然后将fx和fy设置为比例因子即可。

interpolation:插值方法。其中INTER_LINEAR:双线性插值法;INTER_NEAREST:最近邻插值;INTER_AREA:像素区域重采样(默认);INTER_CUBIC:双三次插值。

图像平移:

将图像按照指定方向和距离,移动到相应的位置。

cv.warpAffine(img,M,dsize)

img:要操作的图像

M:2*3移动举证,对于(x,y)处的像素点,要把它移动到(x+tx,y+ty)处时,M矩阵应如下设置:

 

 

注意:将M设置为np.float32类型的Numpy数组。

dsize:输出图像的大小。

注意:输出图像的大小,他应该是(宽度,高度)的形式。请记住,width=列数,height=行数。

posted @ 2021-11-30 20:49  用余生去爱  阅读(143)  评论(0)    收藏  举报