我有一个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
我做错了吗?
答案 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(第二个代码段)的完整示例。