代码语言:javascript复制
import cv2
import numpy as np
o=cv2.imread('C:/Users/xpp/Desktop/coins.png')#原始图像
cv2.imshow("original",o)
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)
cnt=contours[i]
mask=np.zeros(gray.shape,np.uint8)
mask=cv2.drawContours(mask,[cnt],-1,255,-1)#绘制图像实心轮廓
minVal,maxVal,minLoc,maxLoc=cv2.minMaxLoc(gray,mask=mask)#计算最值和最值位置
print("minVal=",minVal)
print("maxVal=",maxVal)
print("minLoc=",minLoc)
print("maxLoc=",maxLoc)
masko=np.zeros(o.shape,np.uint8)
masko=cv2.drawContours(masko,[cnt],-1,(255,255,255),-1)#绘制图像实心轮廓
loc=cv2.bitwise_and(o,masko)#按与位运算
cv2.imshow("mask",loc)
cv2.waitKey()
cv2.destroyAllWindows()
minVal= 128.0 maxVal= 225.0 minLoc= (241, 11) maxLoc= (217, 16)
算法:最值位置是指掩模指定区域内最小值位置和最大值的位置。
min_val, max_val, min_loc, max_loc=cv2.minMaxLoc(imgray, mask = mask)
- min_val表示最小值
- max_val表示最大值
- min_loc表示最小值的位置
- max_loc表示最大值的位置
- imgray表示单通道图像
- mask表示掩码
注意:函数cv2.minMaxLoc()处理的对象是灰度图像而不是彩色图像。对于彩色图像,提取各个通道的图像,每个通道独立计算最值位置。