OpenCV(python)——一键入门--第4篇

在这里,我们接着分享几个简单操作

1:图像翻转

h,w,ch = src.shape  #读取照片高,宽,通道,需要先imread
dstt = np.zeros(src.shape,src.dtype)  #创建一个空图像
for row in range(h):
    for col in range(w):
        b,g,r = src[row,col]  #将像素点的 B,G,R三通道值取出
        dstt[row, w - col - 1] = [b,g,r]  #然后放在对应像素位置
cv.imshow("custom-y-flip",dstt)  1#模拟y轴翻转的图像展示

不过,opencv有内置函数,cv.flip(图像,对应参数),其中对应参数中,0对应的x轴翻转,1对应的y轴翻转,-1对应的xy轴翻转

dst1 = cv.flip(src,0)
cv.imshow("x-flip",dst1)
dst2 = cv.flip(src,1)
cv.imshow("y-flip",dst2)
dst3 = cv.flip(src,-1)
cv.imshow("xy-flip",dst3)

2:插值

h, w = src.shape[:2]  #读取

dst = cv.resize(src, (w*2, h*2), fx=0.75, fy=0.75, interpolation=cv.INTER_NEAREST)#最邻近插值
cv.imshow("INTER_NEAREST", dst)

dst = cv.resize(src, (w*2, h*2), interpolation=cv.INTER_LINEAR)#双线性插值
cv.imshow("INTER_LINEAR", dst)

dst = cv.resize(src, (w*2, h*2), interpolation=cv.INTER_CUBIC)#双立方插值
cv.imshow("INTER_CUBIC", dst)

dst = cv.resize(src, (w*2, h*2), interpolation=cv.INTER_LANCZOS4)#兰索斯插值
cv.imshow("INTER_LANCZOS4", dst)

具体插值原理内容较多,具体可以参考该文章:https://blog.csdn.net/qq_44957388/article/details/105618947

3:绘制图形

image_tu = np.zeros((512,512,3),dtype=np.uint8)
cv.rectangle(image_tu, (100, 100), (300, 300), (255, 0, 0), 2, cv.LINE_8, 0)
cv.circle(image_tu, (256, 256), 50, (0, 0, 255), 2, cv.LINE_8, 0)
cv.ellipse(image_tu, (256, 256), (150, 50), 360, 0, 360, (0, 255, 0), 2, cv.LINE_8, 0)
cv.imshow("image",image_tu)

矩形绘制:

rectangle(ima, start_point, end_point, color, thickness)
ima:它是要在其上绘制矩形的图像。
start_point:它是矩形的起始坐标。坐标表示为两个值的元组,即(X坐标值,Y坐标值)。
end_point:它是矩形的结束坐标。坐标表示为两个值的元组,即(X坐标值ÿ坐标值)。
color:它是要绘制的矩形的边界线的颜色。对于BGR,我们通过一个元组。例如:(255,0,0)为蓝色。
thickness:它是矩形边框线的粗细像素。厚度-1像素将以指定的颜色填充矩形形状。

圆形绘制:

circle(ima, center_coordinates, radius, color, thickness)
ima:它是要在其上绘制圆的图像。
center_coordinates:它是圆的中心坐标。坐标表示为两个值的元组,即(X坐标值,Y坐标值)。
radius:它是圆的半径。
color:它是要绘制的圆的边界线的颜色。对于BGR,我们通过一个元组。例如:(255,0,0)为蓝色。
thickness:它是圆边界线的粗细像素。厚度-1像素将以指定的颜色填充矩形形状。

其中椭圆的绘制函数稍微比较复杂,介绍如下:

ellipse(img, center, axes, angle, startAngle, endAngle, color[, thickness[, lineType[, shift]]])
img:要在上面画椭圆的图像
center:椭圆的中心
axes:椭圆的轴长,格式为 (长轴长度的一半, 短轴长度的一半)
angle:椭圆沿水平方向逆时针旋转的角度
startAngle:沿长轴顺时针方向开始显示的角度
endAngle:沿长轴顺时针结束显示的角度
thickness:椭圆边框的粗细,cv.FILLED 表示绘制实心椭圆
lineType:椭圆边框的类型
shift:坐标精确到小数点后第几位

效果如下

(完)