Python 图像识别中如何找出图像的中心点

1530003617_1.png 应该如何确定红点的坐标


Python 图像识别中如何找出图像的中心点
20 回复

有没有思路和相关模块推荐


import cv2
import numpy as np

def find_image_center(image_path):
    """
    找出图像的中心点坐标
    
    参数:
        image_path: 图像文件路径
    
    返回:
        center_x, center_y: 图像中心点坐标
    """
    # 读取图像
    img = cv2.imread(image_path)
    
    if img is None:
        raise ValueError(f"无法读取图像: {image_path}")
    
    # 获取图像尺寸
    height, width = img.shape[:2]
    
    # 计算中心点坐标
    center_x = width // 2
    center_y = height // 2
    
    return center_x, center_y

def find_contour_center(image_path):
    """
    找出图像中主要轮廓的中心点(质心)
    
    参数:
        image_path: 图像文件路径
    
    返回:
        centroid_x, centroid_y: 轮廓质心坐标
    """
    # 读取图像并转为灰度图
    img = cv2.imread(image_path)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    
    # 二值化处理
    _, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
    
    # 查找轮廓
    contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
    
    if not contours:
        return None
    
    # 找到最大轮廓
    largest_contour = max(contours, key=cv2.contourArea)
    
    # 计算轮廓的矩
    M = cv2.moments(largest_contour)
    
    # 计算质心
    if M["m00"] != 0:
        centroid_x = int(M["m10"] / M["m00"])
        centroid_y = int(M["m01"] / M["m00"])
        return centroid_x, centroid_y
    
    return None

# 使用示例
if __name__ == "__main__":
    # 方法1:获取图像几何中心
    center_x, center_y = find_image_center("your_image.jpg")
    print(f"图像几何中心: ({center_x}, {center_y})")
    
    # 方法2:获取轮廓质心
    centroid = find_contour_center("your_image.jpg")
    if centroid:
        print(f"轮廓质心: {centroid}")
    else:
        print("未找到有效轮廓")

核心解释:

  1. 几何中心:直接用图像宽高计算 (width//2, height//2),这是最简单的中心点定义。

  2. 轮廓质心:通过OpenCV的findContours找到图像中的物体轮廓,再用moments计算轮廓的质心。这更适合识别不规则物体的中心。

选择建议:

  • 用几何中心处理规则图像,用轮廓质心处理不规则物体。

先识别出轮廓,然后求轮廓点集的中心坐标?是这个意思吗?

擦!竟然还有图片,回复完了图片才载入。。。

红色这么明显的,直接按 rgb 通道处理应该就行吧

聚类,然后取平均,可以拿到重心,中点大概在图像外围包一层再求吧

红点明显是为了示例的 - -

Rgb 图像直接转成 hsv,然后提取出轮廓。然后找到质心,完成

孤立这个老实人

轮廓 矩形的中心点 就是了

还是这个方法 6666

提供个思路,转化成灰度,或者降维,然后 sklearn 聚类

二值化 -> 连通分量 -> 重心?

opencv
谷歌一下,你就知道

这个我做过。是为了把 QQ 游戏大厅的找茬游戏的图片中不同处标出来,
也是图片中分成了好几块,要找出各个块的中心点。

据类算法有好多种,要选一个合适的,否则有一些异形的会聚类歪。

你还可以试试分水岭算法,就是先把这几块切分开来。

是我审题不清了,。尬。换我拿到这种问题,就是搞几个示例图片,打开 matlab 和 google 一把梭看感觉先试几个方法,阈值过滤,二值化,最大联通区域然后求重心什么的

刚开始没找到图片上传选项,所以放到其他服务器了,就是找到图片红点范围坐标

是的就是找茬游戏

已经实现,用的 opencv 先灰度模糊,再二值化,找到图形轮廓最后确定中心点

回到顶部