我有一个多个圆的图像,在圆内有热点区域,具有高强度(高像素值)和冷点区域(低像素值)。我想用Python中的OpenCV计算每个圆的加权质心。我使用以下代码:
im2, contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
for c in contours:
# calculate moments for each contour
M = cv2.moments(c)
# calculate x,y coordinate of center
if M["m00"] != 0:
cX = int(M["m10"] / M["m00"])
cY = int(M["m01"] / M["m00"])
else:
cX, cY = 0, 0
好的,这段代码简单地取二进制图像,提取所有的圆,并找到每个圆的轮廓。
问题是我需要找到一个RGB/灰度图像的加权质心(考虑了像素强度),而不是二进制图像。我怎么做呢?
谢谢你,谢谢你
2条答案
按热度按时间yvt65v4c1#
这里是一种python伪代码解决你的问题。代码是设计来计算质心的加权中心。图像的强度级别在计算中被用作权重。因此,强度越高,权重越高。
为了简化计算过程,我们需要有原始图像大小的x坐标和y坐标网格,x和y坐标的加权平均值将为您提供加权质心
5lhxktic2#
对@yapws87答案的一些修正: