import cv2import numpy as npo=cv2.imread('C:/Users/xpp/Desktop/coins.png')gray=cv2.cvtColor(o,cv2.COLOR_BGR2GRAY)ret,binary=cv2.threshold(gray,127,255,cv2.THRESH_BINARY)contours,hierarchy=cv2.findContours(binary,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)n=len(contours)contoursImg=[]for i in range(n): temp=np.zeros(o.shape,np.uint8) contoursImg.append(temp)x,y,w,h=cv2.boundingRect(contours[i])brcnt=np.array([[[x,y]],[[x+w,y]],[[x+w,y+h]],[[x,y+h]]])o=cv2.drawContours(o,[brcnt],-1,(255,255,255),2)print("頂點及長寬的點形式:")print("x=",x)print("y=",y)print("w=",w)print("h=",h)rect=cv2.boundingRect(contours[i])print("\n頂點及長寬的元組(tuple)形式:")print("rect=",rect)cv2.imshow("original",o)cv2.waitKey()cv2.destroyAllWindows()頂點及長寬的點形式:
x= 173
y= 10
w= 110
h= 105
頂點及長寬的元組(tuple)形式:
rect= (173, 10, 110, 105)算法:矩形包圍框是計算包圍指定輪廓點集的左上角頂點的坐標以及矩形長和寬。
x, y, w, h=cv2.boundingRect(array)
x表示矩形邊界左上角頂點的x坐標
y表示矩形邊界左上角頂點的y坐標
w表示矩形邊界的x方向的長度
h表示矩形邊界的y方向的長度
array表示輪廓或灰度圖像
注意:矩形包圍框是外部矩形而不是內部矩形。