在OpenCV打开的图像上,已知图像上的某点坐标,如何获取该点像素值

在OpenCV打开的图像上,已知图像上的某点坐标,如何获取该点像素值,第1张

CvScalar s;

s=cvGet2D( image, idx0, idx1 );

image为图像,idx0和idx1为像素坐标

再用sval[i]可以取出不同通道i=0,1,2,3的像素值

cv::findContours( ) 这个函数是用来找轮廓的,我经常用,应该能解决你这个问题。 这个函数找到的线存储的数据结构是std::vector<std::vector<cv::Point> > ,这个里面就有你想要的所有的轮廓点的坐标

通常一幅图像有四个焦角点,已知图像的大小为widthheight,那么四个角点的坐标分别为:(0,0), (0,width-1), (height-1,0), (width-1,height-1)。

1、新建一个 Window,添加一个Grid

<Window x:Class="WpfApplication1MainWindow"

        xmlns=";

2、添加类 FunnyBrush,这是我自己写着玩的

public class FunnyBrush

{

    public static void Draw(Panel panel)

    {

        var brush = new RadialGradientBrush();

        var center = new Point(panelActualWidth / 2d, panelActualHeight / 2d);

        brushCenter = center;

        brushGradientOrigin = center;

        brushRadiusX = centerX;

        brushRadiusY = centerY;

        brushMappingMode = BrushMappingModeAbsolute;

        ConsoleWriteLine(center);

        var stops = new GradientStopCollection();

        stopsAdd(new GradientStop(ColorsYellow, 0d));

        stopsAdd(new GradientStop(ColorsRed, 025d));

        stopsAdd(new GradientStop(ColorsBlue, 075d));

        stopsAdd(new GradientStop(ColorsLimeGreen, 1d));

        brushGradientStops = stops;

        panelBackground = brush;

        var win = FindParent<Window>(panel) as FrameworkElement;

        if (win == null) win = panel;

        winMouseMove += (obj, args) =>

        {

            brushGradientOrigin = argsGetPosition(panel);

        };

        winSizeChanged += (obj, args) =>

        {

            var pt = new Point(panelActualWidth / 2d, panelActualHeight / 2d);

            brushCenter = pt;

            brushRadiusX = ptX;

            brushRadiusY = ptY;

        };

    }

    // 这个方法来自

    // >}

3、在 Window_Loaded 事件中添加代码

FunnyBrushDraw(panel);

像素转化为经纬度不难吧

线性方程组比如开始的1像素代表50度,101像素代表100度y=ax+b

50=a+b

100=101a+b

求得a,b,像素和经纬度的转换关系就可以得到。

接下来是自定义坐标轴的问题,可以这么用

例如:

set(gca,'xtick',[1,3,6,8])%设置在1,3,6,8处出现坐标点,这里改成像素

%不知道行不行

set(gca,'xticklabel',{'10','20','30','40'})%设置在上述坐标点出现得标

%号,当然也可以是倒序,从大到小,y轴类似,xtick->ytick

假设二值图像为P

[row col] = find(P);

每对对应的row和col代表值为1的各个点坐标

如果提取行数最小的,则:

[m, index] = min(row);

row = m;

col = col(index);

这样(row, col)代表x最小的像素坐标

望采纳,谢谢!

以上就是关于在OpenCV打开的图像上,已知图像上的某点坐标,如何获取该点像素值全部的内容,包括:在OpenCV打开的图像上,已知图像上的某点坐标,如何获取该点像素值、opencv如何获得图片所有像素点的坐标、C++怎么提取某个像素点的坐标等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9458229.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存