对矩阵进行排序并将其放在一行中

时间:2012-10-25 10:05:33

标签: opencv

我试图找到一种将3x3行排序为9x1的方法。

所以我有以下内容:

enter image description here

我想最终得到这个:

enter image description here

这是我到目前为止所做的事情:

            Rect roi(y-1,x-1,kernel,kernel);
            Mat image_roi = image(roi);
            Mat image_sort(kernel, kernel, CV_8U);
            cv::sort(image_roi, image_sort, CV_SORT_ASCENDING+CV_SORT_EVERY_ROW);

代码不起作用,目前我的image_sort中的“排序”后找不到任何数据。

1 个答案:

答案 0 :(得分:4)

确定您有单通道灰度图像?尝试:

cv::Mat image_sort = cv::Mat::zeros(rect.height, rect.width, rect.type()); // allocated memory
image(roi).copyTo(image_sort); // copy data in image_sorted
std::sort(image_sort.data, image_sort.dataend); // call std::sort
cv::Mat vectorized = image_sort.reshape(1, 1); // reshaped your WxH matrix into a 1x(W*H) vector.