0
点赞
收藏
分享

微信扫一扫

【STL】vector的模拟实现

目录

图像的读取、显示和保存

获取图像属性 

图像截取

 绘图功能

画线

画矩形

画圆圈

画椭圆

         画多边形

向图像添加文本



图像的读取、显示和保存

# 导入 OpenCV
import cv2
# 读取图片-与python文件相同目录
img = cv2.imread("image.png", cv2.NORM_HAMMING)
# 显示窗口命名 0表示cv2.WINDOW_NORMAL
cv2.namedWindow("demo",0)
# 窗口调整大小
cv2.resizeWindow("demo", 400, 500)
# 显示加载的图像
cv2.imshow("demo", img)
# 窗口保持显示(回车键可关闭窗口)
cv2.waitKey(-1)
# 销毁所有窗口
cv2.destroyAllWindows()
# 保存图像
cv2.imwrite("D:\\demo.png", img)

获取图像属性 

OpenCV像素通道就按照B、G、R的顺序存放   B->BLUE 蓝色  G->Green 绿色  R->RED红色

# 导入 OpenCV
import cv2
# 读取图片-与python文件相同目录
img = cv2.imread("image.png", cv2.NORM_HAMMING)
#获取图像形状
print(img.shape) #打印结果:(2732, 1878, 3)  表示 高 宽 通道数  (h,w,c)
print(len(img)) #打印高:2732
print(len(img[0]))#打印高:1878
#获取图像类型
print(img.dtype) #打印结果:uint8
#获取图像像素个数
print(img.size)  #打印结果:15392088

uint8表示无符号整数,没有符号位,8个比特位全部用来表示整数,所以数据范围是0到255。

可以用比较小的图片直观的看下打印出来的矩阵

eg:(4,2,3)的矩阵

import numpy as np
a = np.array([
    [[1, 2, 3], [4, 5, 6]],
    [[1, 2, 3], [4, 5, 6]],
    [[1, 2, 3], [4, 5, 6]],
    [[1, 2, 3], [4, 5, 6]]
])
print (a.shape)  # (4,2,3 )

图像截取

# 导入 OpenCV
import cv2
# 读取图片-与python文件相同目录
img = cv2.imread("test1.jpg", cv2.NORM_HAMMING)
cv2.imshow("test",img)
cv2.waitKey(-1)
# 销毁所有窗口
cv2.destroyAllWindows()
#表示 高取190到380像素的点,宽取340到410像素点
img = img[190:380,340:410]
cv2.imwrite("test11.jpg",img)
cv2.imshow("test",img)
cv2.waitKey(-1)
# 销毁所有窗口
cv2.destroyAllWindows()

运行效果

原始图片

         截取后的图片=>  

 绘图功能

OpenCV绘制不同的几何形状

包括cv.line(),cv.circle(),cv.rectangle(),cv.ellipse(),cv.putText()

画线

import numpy as np
import cv2 as cv
# 创建黑色的图像
img = np.zeros((512,512,3), np.uint8)
# 绘制一条厚度为5的蓝色对角线
cv.line(img,(0,0),(511,511),(255,0,0),5)
cv.imshow("test",img)
cv.waitKey(-1)
# 销毁所有窗口
cv.destroyAllWindows()

运行效果==>

画矩形

import numpy as np
import cv2 as cv
# 创建黑色的图像
img = np.zeros((512,512,3), np.uint8)+255
print(img)
cv.rectangle(img,(384,0),(510,128),(0,255,0),3)
cv.imshow("test",img)
cv.waitKey(-1)
# 销毁所有窗口
cv.destroyAllWindows()

画圆圈

import numpy as np
import cv2 as cv
# 创建黑色的图像
img = np.zeros((512,512,3), np.uint8)+255
print(img)
cv.circle(img,(447,63), 63, (0,0,255), -1)
cv.imshow("test",img)
cv.waitKey(-1)
# 销毁所有窗口
cv.destroyAllWindows()

 

画椭圆

import numpy as np
import cv2 as cv
# 创建黑色的图像
img = np.zeros((512,512,3), np.uint8)
print(img)
cv.ellipse(img,(256,256),(100,50),0,0,180,255,-1)
cv.imshow("test",img)
cv.waitKey(-1)
# 销毁所有窗口
cv.destroyAllWindows()

 画多边形

要绘制多边形,首先需要顶点的坐标。将这些点组成形状为ROWSx1x2的数组,其中ROWS是顶点数,并且其类型应为int32。在这里,我们绘制了一个带有四个顶点的黄色小多边形。

pts = np.array([[10,5],[20,30],[70,20],[50,10]], np.int32)
pts = pts.reshape((-1,1,2))
cv.polylines(img,[pts],True,(0,255,255))

向图像添加文本

import numpy as np
import cv2 as cv
# 创建黑色的图像
img = np.zeros((512,512,3), np.uint8)
print(img)
font = cv.FONT_HERSHEY_SIMPLEX
cv.putText(img,'OpenCV',(10,500), font, 4,(255,255,255),2,cv.LINE_AA)
cv.imshow("test",img)
cv.waitKey(-1)
# 销毁所有窗口
cv.destroyAllWindows()

 

举报

相关推荐

0 条评论