栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

2021-10-04

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2021-10-04

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读取修改像素、几何图形绘制

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/290724.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号