我有一个二进制图像,我需要找到黑色区域的x和y的平均值。这些值是为一组二进制图像计算的,它们的x和y的平均值被绘制出来,我不知道如何找到这个区域并计算它们的x和y的平均值。任何帮助表示感谢。使用python查找blackpixels的平均位置
回答
如果黑色像素不在某些数据结构登记,才算质量中心为黑色像素:
sx = 0
sy = 0
black_cnt = 0
for y in y-range
for x in x-range
if black(x,y)
sx = sx + x
sy = sy + y
black_cnt++
sx = sx/black_cnt
sy = sy/black_cnt
我得到'IndexError:指数255是出界对轴0,大小200'此错误 – karthik
所以你写错周期 – MBo
你的错了循环的意思,'IM = CV2 .imread( 'v6.tif',0) RET,脱粒= cv2.threshold(1M,120,255,1) 一个LEN =(IM) 打印脱粒 b = A + 2 SX = 0 SY = 0 blackc = 0 对于x在范围(a)中: y的范围内的(a): 像素= IM [X,Y] 如果像素== 0: SX = SX + X SY = SY + y blackc + = 1个 打印blackc cv2.waitKey()'我您正在使用'有效范围内的(a)中,同时'x应在范围(宽度)和y在范围(高度) – karthik
您可以获取使用轮廓的时刻的平均位置。
为了找到平均值,您必须计算轮廓的一阶矩。
CODE:
#---Read image and obtain threshold---
im = cv2.imread('1.jpg', 1)
img = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
ret, thresh = cv2.threshold(img, 120, 255, 1)
#---Obtain contours---
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
cnts = contours
cv2.drawContours(im, contours, -1, (0, 255, 0), 1)
#---Compute the center/mean of the contours---
for c in cnts:
M = cv2.moments(c)
cX = int(M["m10"]/M["m00"])
cY = int(M["m01"]/M["m00"])
print cX
print cY
价值观cX
和cY
有轮廓的平均位置。
我X这样 – karthik
- 1. Python-查找平均
- 2. Python:查找平均值
- 3. 使用awk查找列的平均值
- 4. 查找平均SQL
- 5. 查找平均值
- 6. 查找平均值
- 7. 在Python中查找平均值
- 8. 使用python查找csv文件的平均值(忽略null)
- 9. 使用python查找CSV文件的小时平均数
- 10. 查找意味着平均使用python的Hadoop流
- 11. 使用Python在文件中查找每行的平均长度
- 12. 使用Python查找n个数字的平均值
- 13. 使用谷歌地图API查找某个位置的平均速度
- 14. 查找平均值,中位数不使用数组
- 15. 查找平均位置,并删除其他地点:
- 16. 用于查找反向平均值的Python代码(查找可给出某个平均值的可能值集)
- 17. 从平均拍摄位置
- 18. [R grep的用法:查找平均
- 19. 查找滞后平均
- 20. Excel查找平均速度
- 21. SPARQL查找平均值?
- 22. 查找平均指数
- 23. 查找平均在表
- 24. 查找前n平均值
- 25. 查找平均时间
- 26. 找出python中的平均值
- 27. 在Rstudio中使用Dummy变量查找Y的平均值,中位数和SD
- 28. 的Tableau总平均每VS位置
- 29. Sklearn:找到簇的平均质心位置?
- 30. 如何找到经度和纬度位置的平均值?
使用'cv2.moments' – Miki