
CvScalar s;
s=cvGet2D( 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++怎么提取某个像素点的坐标等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)