weixin_44907706 2021-04-13 02:09 采纳率: 100%
浏览 1794
已采纳

opencv-python 怎么获取4角点xy坐标值

小白求大佬指教!!!

opencv-python 怎么获取4角点坐标数值   

运行如下代码获取后面图

import cv2

import numpy as np

img = cv2.imread('C:/Users/Administrator/Desktop/01/04.png')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
dst = cv2.cornerHarris(gray, 2, 3, 0.04)
img[dst > 0.01 * dst.max()] = [0, 0, 255]
cv2.imshow('res', img)
cv2.waitKey(0)

我要获取 左上xy  右上xy  左下xy  右下xy  的角点坐标值,

最好能得到的数据后面加一位小数点.0 如:

  左上x=**.0   y=**.0

  右上x=**.0   y=**.0

  左下x=**.0   y=**.0

  右下x=**.0   y=**.0

  • 写回答

5条回答 默认 最新

  • 白驹_过隙 算法领域新星创作者 2021-04-13 08:40
    关注
    import cv2 
    import numpy as np
    import matplotlib.pyplot as plt
    img =cv2.imread('E:/python/ha.png') 
    imgray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    #harris角点检测图像需为float32
    gray=np.float32(imgray)
    dst=cv2.cornerHarris(gray,8,3,0.04)
    dst=cv2.dilate(dst,None)
    ret,dst=cv2.threshold(dst,0.01*dst.max(),255,0)
    dst=np.uint8(dst)
    #图像连通域
    ret,labels,stats,centroids=cv2.connectedComponentsWithStats(dst)
    #迭代停止规则
    criteria=(cv2.TERM_CRITERIA_EPS+cv2.TERM_CRITERIA_MAX_ITER,100,0.001)
    corners=cv2.cornerSubPix(gray,np.float32(centroids),(5,5),(-1,-1),criteria)
    res=np.hstack((centroids,corners))
    res=np.int0(res)
     
    #img[res[:,1],res[:,0]]=[0,120,255]
    #img[res[:,3],res[:,2]]=[45,255,100]
     
     
    for i in res:
        x1,y1,x2,y2=i.ravel()
        cv2.circle(img,(x1,y1),3,255,-1)
        cv2.circle(img,(x2,y2),3,(0,255,0),-1)
    img=img[:,:,::-1]
    plt.imshow(img)

    参考https://blog.csdn.net/zhu_hongji/article/details/81235643

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!