小编Bir*_*der的帖子

Cv2 findChessboardCorners 找不到角点

我正在使用 cv2 findChessBoardCorners 在视觉应用程序中进行相机校准。我对该函数的调用如下所示:

def auto_detect_checkerboard(self, image):
    retval, corners = cv2.findChessboardCorners(image, (7, 7), flags=cv2.CALIB_CB_ADAPTIVE_THRESH
                                                + cv2.CALIB_CB_EXHAUSTIVE)
    if(retval):
        return corners[0][0], corners[0][1]
    else:
        print("No Checkerboard Found")
        assert False
Run Code Online (Sandbox Code Playgroud)

但到目前为止,它似乎无法在我尝试过的所有图像上找到任何角落。我用过的最简单的例子是木桌上棋盘的 960 x 1280 照片

我使用该功能有问题吗?或者我需要在预处理中处理的图像有问题吗?

到目前为止,我已经尝试转换为灰度并应用高斯滤波器,这两种方法似乎都没有产生任何作用。

python opencv calibration computer-vision

8
推荐指数
1
解决办法
2万
查看次数

用于人类比较的列表排序算法

这个问题曾被问过一次,但没有回答,所以我想我会再次询问我的具体情况.

我正在尝试开发一个应用程序,让您放入一个离散项目列表(例如,水果),它为您提供两者之间的比较.你选择你最喜欢的两个,然后重复这个过程,直到你最终有一个按这些对象的优先顺序排序的列表(在这个例子中,按顺序排列你最喜欢的水果).

问题在于,传统的排序策略,无论多快,都必然涉及更多的操作,而不是人类在任何合理的时间内完成的操作(即使列表短至50,因为我目前的测试列表是).

由于很明显没有一个保证排序算法的复杂度足够低,我想有些补贴必须要做.有没有办法跳过大块的排序?我考虑了一些根据他们"赢得"的比较为项目分配值的方法,然后在一段时间后停止排序并假设这些值给出正确的顺序,类似于您可能解决瑞士国际象棋的风格锦标赛,如果你不能完成足够的轮次来正常确定胜利者.我不知道这是否合情合理.

一个澄清我的意思的例子:说你有一份清单

Apple
Orange
Kiwi
Banana
Melon
Run Code Online (Sandbox Code Playgroud)

它会为你提供比较

Do you prefer:
A Apple
B Kiwi
Run Code Online (Sandbox Code Playgroud)

等等,直到你有一个看起来像的列表

Kiwi
Apple
Orange
Melon
Banana
Run Code Online (Sandbox Code Playgroud)

这是你对这些水果的偏好顺序.

sorting algorithm

7
推荐指数
1
解决办法
141
查看次数

第一次改装后没有收到回应

我在android上使用RetroFit以便将图像发送到REST服务器(使用Python和Flask开发)。该应用程序将第一张图像发送到存储该图像的服务器,并将该图像的ID返回给客户端。然后,客户端拍摄另一张照片并将其发送到服务器,这次是在端点URL中使用先前的图像ID。然后,服务器应计算从图像A到图像B的旋转并返回结果。客户端发送完第二张图像后,它应重复轮询端点以获取结果,直到服务器端计算完成。

第一个图像正确发送,服务器将其存储。客户端然后正确地从服务器接收响应。当客户端发送第二个图像时,会出现问题。服务器正确接收了POST,但是客户端似乎从未收到响应。第三条消息(轮询结果的GET请求)也是如此,服务器已接收到该消息,但客户端从未看到响应。

我的REST服务器的代码在这里

class Image(Resource):
    def post(self):
        file = request.files['uploaded_file']
        centerX = request.form['center_x']
        centerY = request.form['center_y']
        if file and allowed_file(file.filename):
            filename = secure_filename(file.filename)
            file.save(os.path.join(app.config['UPLOAD_FOLDER'], str(id(True)) + ".jpg"))
            result = {'id' : id(), 'error' : True, 'result' : 5.5}
            return jsonify(result)
        else:
            return {'id' : -1, 'error' : False}

class Find_Transform(Resource):
    def post(self, first_id):
        result = {'id' : 1, 'error' : True, 'result' : 1.2}
        return jsonify(result)

class Find_Transform_Result(Resource):
    def get(self, first_id, second_id):
        print("Hello")
        result = {'id' : 0, 'error' : …
Run Code Online (Sandbox Code Playgroud)

java rest android flask retrofit

7
推荐指数
0
解决办法
266
查看次数

QFile::ReadAll() 返回一个空数组

造成这种情况的一些常见原因是什么?我的第一个想法是我正在阅读的文件是只读的,但我已经检查过了。

调用它的代码是:

QFile histogramFile(fileName);
quint64 fileSize = histogramFile.size();
QByteArray histogramByteArray = histogramFile.readAll();
Run Code Online (Sandbox Code Playgroud)

file-io qt

2
推荐指数
1
解决办法
3798
查看次数

找到带有障碍物的网格上的最近点

我有一个游戏,你必须在地图上移动收集黄金,然后移动到出口.我目前正在尝试编写一个可以玩这个游戏的人工智能,但我想知道我应该使用什么算法找到最近的对象实例.例如,最接近的金块或最接近的未知地图方块.问题在于玩家无法穿过墙壁,因此我不需要找到最接近的物体,而是找到最短路线的物体.有算法可以做到这一点吗?

algorithm grid shortest-path

1
推荐指数
1
解决办法
1079
查看次数

尝试从OpenGL中的.obj绘制网格时,某些三角形不显示

我正在尝试显示从.obj文件加载的对象.我用这个函数来读取.obj:

bool loadOBJ(
    const char * path, 
    std::vector<glm::vec3> & vertices,
    std::vector<glm::vec3> & vertexIndices
){
    printf("Loading OBJ file %s...\n", path);

    FILE * file = fopen(path, "r");
    if( file == NULL ){
            printf("Impossible to open the file ! Are you in the right path ? \n");
            getchar();
            return false;
    }

    while( 1 ){

            char lineHeader[128];
            // read the first word of the line
            int res = fscanf(file, "%s", lineHeader);
            if (res == EOF)
                    break; // EOF = End Of File. Quit the …
Run Code Online (Sandbox Code Playgroud)

c++ opengl 3d mesh

1
推荐指数
1
解决办法
1119
查看次数

定向边界框在 OpenGL 中畸形且尺寸错误

我正在 OpenGL 中编写一个程序来加载一个网格并在所述网格周围绘制一个定向边界框。网格正确加载,但是当我绘制边界框时,框的形状错误且太小。

兔网

我用来计算这个框的过程是使用主成分分析来找到协方差矩阵。然后我得到了该矩阵的特征向量并将它们用作局部坐标系来找到立方体的 8 个顶点。然后我计算了一个变换,将立方体从局部坐标系移动到全局坐标系。

计算协方差的代码在这里:

std::array<std::array<double, 3>, 3> covarianceCalc2()
{
 std::array<std::array<double, 3>, 3> sum = {{{0, 0, 0}, {0, 0, 0}, {0, 0, 0,}}};
 std::array<double, 3> tempVec;
 double mean = 0;
 for(int i = 0; i < meshVertices.size(); i++)
 {
     mean += meshVertices[i].x;
     mean += meshVertices[i].y;
     mean += meshVertices[i].z;
 }
 mean = mean/(meshVertices.size() * 3);

 for(int i = 0; i < meshVertices.size(); i++)
 {
     //mean = (meshVertices[i].x + meshVertices[i].y + meshVertices[i].z)/3;
     tempVec[0] = meshVertices[i].x - mean;
     tempVec[1] = …
Run Code Online (Sandbox Code Playgroud)

c++ opengl bounding-box

1
推荐指数
1
解决办法
1379
查看次数