w,h和x,y的顺序问题
opencv在python中的Mat等数据结构都是依托于numpy的,numpy的一些特性与我们的常识有些稍微违背,一些注意点如下:
import numpy as np
import cv2
image=cv2.imread("image.jpg",0) # image.jpg是一张640×480的图像
print(image.shape)
>>> (480, 640)
# 对图像的某个元素进行操作
image[y, x] = 0 # 对image的第y行,第x列操作,和C++的at函数的顺序一样
# opencv函数中size的顺序是按照宽度在前,高度在后的
image = cv2.resize(image, (new_w, new_y))
# opencv画图函数中的点都是元组,x(宽度方向)在前,y(高度方向)在后
cv2.circle(image, (int(pt_x), int(pt_y)), 2, (255,255,255), 1)
当然,上述的函数中,x,y或者w,h的顺序还是以官网的介绍为主。
对轮廓进行操作的函数
例如minAreaRect和fitEllipse函数,输入一个numpy的向量,该向量的形状为(L, 1, 2),且其中的所有元素必须是int型!!!如果不是int型,则引发错误error: (-215) total >= 0 && (depth == 5 || depth == 4) in function XXXX。