python-opencv知识总结之图像操作:创建、遍历、运算与查找

1.Numpy简介

python版的opencv用的容器不同于C++版的Mat,python版的图像容器基本都倚仗numpy,其数据类型如下:

python-opencv知识总结之图像操作:创建、遍历、运算与查找_第1张图片
数组属性
python-opencv知识总结之图像操作:创建、遍历、运算与查找_第2张图片

#创建一个numpy.array
numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)

python-opencv知识总结之图像操作:创建、遍历、运算与查找_第3张图片
数组操作:

 # 将所有轮廓点归到一个点集
    conts = []
    for i in cnts:
        tmp_list = np.squeeze(i).flatten().tolist()
        conts += tmp_list
    conts = np.array(conts, dtype=np.int32).reshape([-1, 2])
    print(conts)

2.创建空白图像

*******************************单通道***************************************
import cv2
import numpy as np

img_mask = np.zeros((src.shape[0], src.shape[1]), np.uint8)
img = np.zeros((10, 10), np.uint8)
# 浅灰色背景
img.fill(200)
cv2.imshow('img', img)
cv2.waitKey(0)

*******************************三通道***************************************
import cv2
import numpy as np

img = np.zeros((10, 10, 3), np.uint8)
# 浅灰色背景
img.fill(200)
cv2.imshow('img', img)
cv2.waitKey(0)

3.图像mat操作

#选取ROI
roi=img_mask[y:y+h,x:x+w]
#拼接
img_cat=cv2.hconcat([img_close,img_open])

4.绘图操作:点、线、图形

#绘制凸包
hulls = []
hull = cv2.convexHull(conts)
hulls.append(hull)
cv2.drawContours(src, hulls, -1, [255, 0, 25], 1)
# center, axes, angle = cv2.fitEllipseAMS(hulls[0])
# cv2.ellipse(src, box=tuple([center, axes, angle]), color=(5, 255, 10), thickness=2)
center, radius = cv2.minEnclosingCircle(hulls[0])
# print(center)
cv2.circle(src, tuple(np.int0(center)), int(radius + 8), (5, 255, 10), 2)


你可能感兴趣的:(#,Python,-,opencv,python,opencv,numpy)