如何获得准确的中心点?

2024-01-19

如何使用 OpenCV 霍​​夫圆变换获得准确的中心点?我需要更多精确的 x,y 坐标小数位。

(准确地说我的意思是这样的) 我用 matlab 得到了这些中心坐标

x107,775526315904   y112,963480232638
x469,550463441518   y208,309866770404
x217,386414755458   y490,882895036058

这是我的代码:

#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/core/core.hpp>
#include <iostream>
#include <stdio.h>

using namespace cv;
using namespace std;


int main()
{
    Mat src, src_gray, src0;
    printf("Give the name of the picture\n");
    char ImageName[20];
    scanf("%s", &ImageName);
    /// Read the image 
    src = imread(ImageName, 1);
    if (!src.data)
    {
        printf("no image data\n");
        return main();
    }
    // src0 = src;
    // imshow("orignal", src0);
    /// Convert it to gray
    cvtColor(src, src_gray, CV_BGR2GRAY);
    GaussianBlur(src_gray, src_gray, Size(9, 9), 2, 2);
    vector<Vec3f> circles;
    /// Apply the Hough Transform to find the circles
    HoughCircles(src_gray, circles, CV_HOUGH_GRADIENT, 0.92, src_gray.rows / 10, 20, 10, 55, 60);
    for (size_t i = 0; i < circles.size(); i++)
    {
        Point center(cvRound(circles[i][0]), cvRound(circles[i][1]));
        int radius = cvRound(circles[i][2]);
    //  printf("%d center x %d y %d\n", i, cvRound(circles[i][0]), cvRound(circles[i][1]));
    //  printf("rad: %d\n", cvRound(circles[i][2]));
        cout << i + 1 << " centerpoint " << " x: " << circles[i][0] << "   y: " << circles[i][1] << "rad: " << circles[i][2] << endl;
        // cout << i + 1 << " othermethod" << "x : " << center.x << endl;
        // circle center
        circle(src, center, 1, Scalar(0, 255, 0), -1, 8, 0);
        // circle outline
        circle(src, center, radius, Scalar(255, 0, 0), 1, 8, 0);
    }
    imshow("circlefinder", src);
    waitKey(1);
    system("PAUSE");
    cvDestroyWindow("orignal");
    cvDestroyWindow("circlefinder");
    printf("new picture ?(y/n)");
    char ans[1];
    scanf("%s", &ans);
    if (strcmp(ans, "y"))
    {
        return 0;
    }
    else if (strcmp(ans, "n"))
    {
        return main();
    }

}

这是输出:

Give the name of the picture
as2.jpg
145.5test x
1 centerpoint  x: 105.5   y: 112.5rad: 55.5563
2 centerpoint  x: 235.5   y: 427.5rad: 56.626
3 centerpoint  x: 466.5   y: 196.5rad: 55.5203
A folytatáshoz nyomjon meg egy billentyűt . . .
new picture ?

丢失的不是您的数据。这只是您跳过一些数字的打印功能。

尝试 std::set precision:

std::cout << 432.123456789f << "   " << std::setprecision(10) << 432.123456789f << std::endl;

不要忘记:

#include <iomanip>

无论如何,我认为你真的不需要那么精确。您在图像处理中的测量误差通常相当大,最后一位数字不会为您提供任何真实信息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何获得准确的中心点? 的相关文章

随机推荐

  • 如何在 Windows 窗体应用程序中构建启动屏幕?

    我需要在应用程序启动时显示启动画面几秒钟 有人知道如何实施吗 将非常感谢您的帮助 首先 将启动屏幕创建为无边框 不可移动的形式 并在其上显示图像 设置为最初显示在屏幕中央 并按您想要的方式着色 所有这些都可以在设计器内部设置 具体来说 您想
  • PHP Amazon S3 上传和标签

    我正在编写一个视频共享网站 我正在使用 S3 来存储和提供视频 我已经在 MySQL 数据库中为视频编写了标签 但我发现 S3 支持上传文件上的设置标签 这是我用来上传文件的代码 try Create a S3Client s3Client
  • 返回Json,但其中包含反斜杠“\”,这是我不想要的

    我使用 MVC4 web api c 并且想要返回 Json使用 Json net 问题是它带有 反斜杠 我还将此代码添加到 Global asax 中 GlobalConfiguration Configuration Formatter
  • WPF 根据条件隐藏数据网格中的行

    我需要根据数据网格中的参数和值隐藏数据网格中的行 我想做这样的事情 foreach System Data DataRowView dr in myDataGrid ItemsSource Logic to determine if Row
  • opengl中使用哪种图像类型

    当使用 OpenGL 为 Android 编程时 我似乎可以为图像使用 BMP JPG 和 PNG 文件类型 哪一个 如果有的话 最好 非常感谢 这不是 OpenGL 的问题 因为一旦你有了Graphics Bitmap对象来源很大程度上无
  • yarn-client模式和yarn-cluster模式的区别

    我在纱线客户端模式和纱线集群模式上运行类似的代码时遇到了一些问题 当我在客户端模式下运行我的代码时 它可以完美执行 但在纱线集群节点上运行时会失败 它抛出文件非文件异常 指出找不到 pyspark zip 文件 对此的任何见解都会有所帮助
  • Python 中与语法、标记、词干和词义消歧有关的一些 NLP 内容

    背景 TLDR 为了完成而提供 寻求有关奇怪需求的最佳解决方案的建议 我是一名大学四年级的 文学 学生 只有我自己的编程指导 我对Python有足够的能力 所以我不会在实现我找到的解决方案 大多数时候 并在它们的基础上进行开发时遇到麻烦 但
  • 如何提供具有不同数据库模式的多个版本的 API?

    在 Kevin Goldsmith 2015 年的演讲中Spotify 的微服务 https youtu be 7LGPeBgNFuU t 925 从 15 25 17 43 他提到 当他们创建新版本的 API 时 他们只是创建一个新服务器
  • 使用 Python 查找最相似的行

    我有两个数据框 df1 和 df2 在 df1 中 我存储一行包含一组值 我想在 df2 中找到最相似的行 import pandas as pd import numpy as np Df1 has only one row and fo
  • Codeigniter 当我单击“删除”时,如果单击“是”或“否”,我想要弹出通知

    Model function delete exchange ExchangeRateId this gt db gt where ExchangeRateId ExchangeRateId this gt db gt delete exc
  • 在 WPF 中,如何更改代码中 DataTemplate 的 Textblock 的文本绑定?

    我有一个 ListBox 其 ItemsSource 绑定到对象列表 列表框有一个 ItemTemplate 和一个包含 TextBlock 的 DataTemplate 文本块的 Text 绑定到对象的 Name 属性 即 Text Bi
  • 更改 OpenShift JBoss AS 7 中的 URIEncoding

    我正在使用 OpenId 模块使用 Spring Security 构建一个测试应用程序 我也用jQuery OpenId 插件 http jvance com pages JQueryOpenIDPlugin xhtml支持一些提供商 我
  • date-fns 2 - 无法让树摇动工作

    我不知道如何date fns https github com date fns date fnsv 2 树摇动功能有效 为了帮助我 我使用以下方法制作了一个非常简单的项目 date fns 2 1 0 webpack 4 39 3 typ
  • 如何信任具有交叉签名根的 SSL 证书,在 android <= 5 上已过期

    我在一家使用 Comodo Sectigo SSL 证书的公司工作 但是突然间 我们的应用程序在使用 Okhttp 客户端将 POST 发送到服务器时开始抛出此错误 在 Android 4 和 5 版本中 HTTP FAILED javax
  • 如何设置 Emacs 服务器使用的端口?

    我使用 Emacs 完成大部分开发工作 我希望能够从家里连接到在我的办公室工作站上运行的 Emacs 服务器 我通过 VPN 连接到我的办公室网络 我认为这基本上是安全的 不管怎样 我有一个脚本可以复制服务器身份验证文件 但看起来端口每次都
  • Perl 如何构建动态多级哈希查找

    我有一个代码块 我使用了很多次 但有一些细微的变化 我试图将其制作成子例程 此代码块完成配置模板 路由器接口 VRF 其他网络内容 它通过在哈希数据结构 称为 config hash 中查找数据来实现这一点 该数据结构是通过摄取 excel
  • std::promise 抛出未知错误,除非调用 sleep

    我有这个代码 include
  • 从数据库中解析xml

    目前我有 xml 存储在 ms sql 数据库中并且不是文件 这是一个小样本
  • 使用 RelaxNG 进行 XML 模式验证

    您可以推荐哪些 XML 验证工具来提高性能和准确性 而这两个工具对于我们的系统来说都是一个关键问题 我们有以下要求 It is notxmllint 见下文 支持RelaxNG 可以轻松地与 Perl 集成 这是可选的 但它会很好 为什么不
  • 如何获得准确的中心点?

    如何使用 OpenCV 霍 夫圆变换获得准确的中心点 我需要更多精确的 x y 坐标小数位 准确地说我的意思是这样的 我用 matlab 得到了这些中心坐标 x107 775526315904 y112 963480232638 x469