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

举报
拓佑豪 发表于 2021/07/18 15:16:53 2021/07/18
【摘要】 在这里,我们接着分享几个简单操作1:图像翻转h,w,ch = src.shape #读取照片高,宽,通道,需要先imreaddstt = 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三通...

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

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:坐标精确到小数点后第几位

效果如下

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200