OpenCV:Mat :: reshape()什么都不做

时间:2017-02-12 10:20:42

标签: c++ opencv

我有一个640 x 480 CV_8UC3 Mat image,想要执行k-means分段。所以我需要将它转换为CV_32F(这里没问题),重塑它,然后运行k-means。

问题是reshape()什么都不做:

cv::Mat colorMat;
image.convertTo (colorMat, CV_32FC3);
std::cout << colorMat.size () << "; ch: " << colorMat.channels () << std::endl; // [640 x 480]; ch: 3
colorMat.reshape (1, colorMat.rows * colorMat.cols); // Here I expect it to become [307200 x 3], 1 channel - each column representing a color component
std::cout << colorMat.size () << "; ch: " << colorMat.channels () << std::endl; // [640 x 480]; ch: 3

我做错了吗?

1 个答案:

答案 0 :(得分:2)

您需要将<table> <tr> <td class="cb"> <div class="btn-group" data-toggle="buttons" data-opposite-name="_S1"> <label class="btn btn-xs"> <input type="radio" name="_L1" value="a"> </label> <label class="btn btn-xs"> <input type="radio" name="_L1" value="b"> </label> <label class="btn btn-xs"> <input type="radio" name="_L1" value="c"> </label> </div> </td> <td class="cb"> <div class="btn-group" data-toggle="buttons" data-opposite-name="_L1"> <label class="btn btn-xs"> <input type="radio" name="_S1" value="a"> </label> <label class="btn btn-xs"> <input type="radio" name="_S1" value="b"> </label> <label class="btn btn-xs"> <input type="radio" name="_S1" value="c"> </label> </div> </td> </tr> </table> $('input:radio').change(function () { var opposite = $(this).parent().closest('div').data("opposite-name"); if ($('*[name="' + opposite + '"]').val() != $(this).val()) { $('*[name="' + opposite + '"][value="' + $(this).val() + '"]').click(); } }); 的结果分配给矩阵:

reshape

您可以看到here(第二个代码段)的完整示例。