Day2: Numpy读取修改像素值、绘制几何图形

Day2: Numpy读取修改像素值、绘制几何图形

01 Numpy读取、修改像素值

import cv2
import numpy

figure = cv2.imread('image.png', cv2.IMREAD_UNCHANGED)
# numpy读取像素值
r, b, g = figure.item(50, 60, 0), figure.item(50, 60, 1), figure.item(50, 60, 2)
print([r, b, g])
# numpy修改像素值
figure.itemset((50, 60, 0), 100)
figure.itemset((50, 60, 1), 100)
figure.itemset((50, 60, 2), 100)
print(figure[50, 60])

输出:
在这里插入图片描述

02 绘制几何图形

①画直线:cv2.line()

import cv2
import numpy as np

# 用np.zeros()创建黑色图像,参数分别为:数组形状、数据类型
figure = np.zeros((256, 256, 3), np.uint8)
# 用cv2.line()话画直线,参数分别为:图像对象、第一个点坐标、第二个点坐标、颜色、粗细
cv2.line(figure, (0, 0), (255, 255), (100, 50, 150), 3)
# 显示图像
cv2.imshow('line', figure)
# 等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()

输出:
在这里插入图片描述
用循环画出多条线:

import cv2
import numpy as np

# 用np.zeros()创建黑色图像,参数分别为:数组形状、数据类型
figure = np.zeros((256, 256, 3), np.uint8)
# 用循环画出多条直线
i = 0
while i < 256:
    cv2.line(figure, (0, 2*i), (255, 255 - 2*i), (100, 50, 150), 2)
    i += 5
# 显示图像
cv2.imshow('line', figure)
# 等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()

输出:
在这里插入图片描述
②画矩形:cv2.rectangle()

import cv2
import numpy as np

# 用np.zeros()创建黑色图像,参数分别为:数组形状、数据类型
figure = np.zeros((256, 256, 3), np.uint8)
# 用cv2.rectangle()画矩形,参数分别为:图像对象、左上角点坐标、右下角点坐标、颜色、粗细
cv2.rectangle(figure, (50, 200), (150, 80), (100, 200, 50), 3)
# 显示图像
cv2.imshow('rectangle', figure)
# 等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()

输出:
在这里插入图片描述
如果把粗细设置为-1,则为实心矩形:
在这里插入图片描述

③画圆:cv2.circle()

import cv2
import numpy as np

# 用np.zeros()创建黑色图像,参数分别为:数组形状、数据类型
figure = np.zeros((256, 256, 3), np.uint8)
# 用cv2.circle()画矩形,参数分别为:图像对象、圆心、半径、颜色、粗细
cv2.circle(figure, (100, 100), 80, (200, 100, 50), 3)
# 显示图像
cv2.imshow('circle', figure)
# 等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()

输出:
在这里插入图片描述
如果将粗细设置为-1,则为实心圆:
在这里插入图片描述

④画椭圆:cv2.ellipse()
同理,将粗细设置为-1,也可以画出实心椭圆。

import cv2
import numpy as np

# 用np.zeros()创建黑色图像,参数分别为:数组形状、数据类型
figure = np.zeros((256, 256, 3), np.uint8)
# 用cv2.ellipse()画椭圆,参数分别为:图像对象、椭圆中心、长轴短轴、顺时针旋转角度、起始角度(顺)、终止角度(顺)、颜色、粗细
cv2.ellipse(figure, (120, 120), (100, 40), 30, 0, 330, (200, 200, 0), 3)
# 显示图像
cv2.imshow('rectangle', figure)
# 等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()

输出:
在这里插入图片描述
⑤画多边形:cv2.polylines()

import cv2
import numpy as np

# 用np.zeros()创建黑色图像,参数分别为:数组形状、数据类型
figure = np.zeros((256, 256, 3), np.uint8)
# 用cv2.polylines()多边形,参数分别为:图像对象、端点阵列、是否闭合、颜色、粗细
points = np.array([[20, 10], [40, 80], [120,200], [240, 100], [100, 40]])
cv2.polylines(figure, [points], True, (50, 200, 0), 3)
# 显示图像
cv2.imshow('rectangle', figure)
# 等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()

输出:
在这里插入图片描述
绘制五角星:

import cv2
import numpy as np

# 用np.zeros()创建黑色图像,参数分别为:数组形状、数据类型
figure = np.zeros((512, 512, 3), np.uint8)
# 用cv2.polylines()多边形,参数分别为:图像对象、曲线阵列、是否闭合、颜色、粗细
points = np.array([[50, 190], [380, 420], [255, 50], [120, 420], [450, 190]])
cv2.polylines(figure, [points], True, (50, 200, 0), 3)
# 显示图像
cv2.imshow('rectangle', figure)
# 等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述
⑥绘制文字:cv2.putText()

import cv2
import numpy as np

# 用np.zeros()创建黑色图像,参数分别为:数组形状、数据类型
figure = np.zeros((256, 256, 3), np.uint8)
# 用cv2.polylines()绘制文字,参数分别为:图像对象、文字、字符串左下角位置、字体类型、字体大小、字体颜色、粗细
font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(figure, 'this is an string', (50, 50), font, 0.7, (50, 200, 0), 2)
# 显示图像
cv2.imshow('rectangle', figure)
# 等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()

输出:
在这里插入图片描述
参考链接:[Python图像处理] 二.OpenCV和Numpy读取修改像素、几何图形绘制

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值