作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想遍历光栅化圆弧上的像素,给定它的半径、以弧度为单位的开始和结束角度,例如:
template<typename Functor>
void arc(float startRadians, float endRadians, int radius, Functor f);
像这样使用:
arc(0.f, M_PI, 10, [](int x, int y) {
std::cout << "got: " << x << " " << y << "\n";
});
有几个问题:
radius
也作为整数给出radius
的弧之间扇区中的每个像素。和半径为 radius-1
的圆弧在下图中:
radius
, radius-1
.我认为Bresenham's circle algorithm由于角度限制和访问顺序,不直接适用于此问题。
在 stackoverflow 中,我认为这是最密切相关的问题:
最后,OpenCV 在精神上有类似/相关的东西,但仅限于线条:
最佳答案
看看cvLinearPolar()
.
它将图像从 x,y 坐标系映射到极坐标。生成的图像是行 -> 角度和列 -> 半径。那时您的栅格化将是循环行列顺序,没有特殊的功能性栅格化。
这意味着每一行都是 dtheta = 2*Pi/(rowNum)
因此你的弧会是 startAngle = angle1/dtheta
并且同样是 endAngle = angle2/dtheta
。
同样,您的半径计算 drad = maxRad/(columnNum)
。
所以要从极 map 像中获取弧线:
for(int i = maxRad; i > 0; i--) // start at longest radius spiral in
{
for(int j = startAngle; j < endAngle;j++) angle
{
// do action on polarImage[i,j];
}
}
关于c++ - 沿光栅化圆弧遍历像素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46823114/
我是一名优秀的程序员,十分优秀!