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

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条)

报告相同问题?

悬赏问题

  • ¥30 基于信创PC发布的QT应用如何跨用户启动后输入中文
  • ¥20 非root手机,如何精准控制手机流量消耗的大小,如20M
  • ¥15 远程安装一下vasp
  • ¥15 自己做的代码上传图片时,报错
  • ¥15 Lingo线性规划模型怎么搭建
  • ¥15 关于#python#的问题,请各位专家解答!区间型正向化
  • ¥15 unity从3D升级到urp管线,打包ab包后,材质全部变紫色
  • ¥50 comsol温度场仿真无法模拟微米级激光光斑
  • ¥15 上传图片时提交的存储类型
  • ¥15 VB.NET如何绘制倾斜的椭圆