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

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 verilog modelsim仿真
  • ¥15 Power BI 里面 帕累托图突出显示前20
  • ¥50 用预估矫正法,分数阶微分方程组传染病的最优控制代码怎么写
  • ¥15 画个数据流程图,手画也行
  • ¥60 AS自带模拟器AVD Root 和 Xposed安装
  • ¥15 Esp32的microPython设备中main.py文件无法开机自启动
  • ¥30 哪位搞Android的编程师可以帮我远程一下,悬赏30元
  • ¥15 solidity部署上合约,可以mint,也继承接口了,在区块链也不显示代币名字
  • ¥15 讨论 博士论文交互项怎么讨论?
  • ¥50 在集成BiLSTM和GCN模型时遇到了问题