有谁知道如何在OpenCV中围绕另一个点旋转一个点?
我正在寻找这样的函数:
Point2f rotatePoint(Point2f p1, Point2f center, float angle)
{
/* MAGIC */
}
Run Code Online (Sandbox Code Playgroud) 我正在处理黑白图像,就像链接中的第一个一样:http: //imageshack.us/g/33/firstwm.png/ 它有很多"噪音"所以我在它上面应用了一个中值滤镜来平滑它,从而获得第二张照片.
cvSmooth(TempImage, TempImage, CV_MEDIAN, 5, 0);
Run Code Online (Sandbox Code Playgroud)
在此之后,我获得轮廓并将其绘制在另一个图像上,如链接中的第3张图片.我的问题是轮廓仍然有点像素化(前卫).有没有办法平滑B&W图像,以获得更好的轮廓?或者也许用轮廓做点什么.我也尝试过不同内核的Dilate和Erode但问题仍然存在.谢谢你的帮助.
编辑:也尝试过:
cvSmooth(TempImage, TempImage, CV_GAUSSIAN, 9, 9, 3);
cvThreshold(TempImage, TempImage, 127, 255, CV_THRESH_BINARY);
Run Code Online (Sandbox Code Playgroud)
与中值滤波器相同的结果,确定,但仍然留下一些像素化的轮廓.
我有一个最好的路径问题需要解决.给定一个nxn网格,其中填充了可步行的瓷砖和不可步行的瓷砖,我必须从A点到达最短路径的B点.诀窍是一些可行走的瓷砖包含点.当我达到目标时成为有效的解决方案我必须有一定数量的积分.瓷砖上有不同数量的点(或没有),我需要最短的路径才能达到目标,但在途中也至少聚集了M个点.
我所尝试的是A*算法,它找到了2个点之间的最短路径,并尝试将其定制为具有停止条件,不仅仅是当它到达目标而且还具有必要的点.它不像我做的那样工作,因为我阻挡了路径.
如果您有任何建议如何处理此问题或其他更适合的算法,我将不胜感激.谢谢.
我试图绘制一些我存储为顶点数组的轮廓:
typedef struct
{
float* vertices;
int nrPoints;
}VertexCurve;
list<VertexCurve> CurveList;
Run Code Online (Sandbox Code Playgroud)
我正在使用opengl es 2.0书中的一些样本:http://opengles-book.com/
绘图方法如下所示:
void Draw ( ESContext *esContext )
{
UserData *userData = (UserData*)esContext->userData;
// Set the viewport
glViewport ( 0, 0, esContext->width, esContext->height );
// Clear the color buffer
glClear ( GL_COLOR_BUFFER_BIT );
// Use the program object
glUseProgram ( userData->programObject );
//glEnable(GL_SAMPLE_ALPHA_TO_COVERAGE);
//glEnable(GL_SAMPLE_COVERAGE);
//glSampleCoverage(0.5, GL_FALSE);
glEnableVertexAttribArray ( 0 );
//glLineWidth(1);
for (list<VertexCurve>::iterator it = CurveList.begin();
it != CurveList.end(); it++)
{
// Load the …Run Code Online (Sandbox Code Playgroud)