0

3x3の行を9x1に並べ替える方法を見つけようとしています。

だから私は以下を持っています:

ここに画像の説明を入力してください

私はこれで終わりたいです:

ここに画像の説明を入力してください

これは私がこれまでにやったことです:

            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にデータが見つかりません。

4

1 に答える 1

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.
于 2012-10-25T12:43:16.653 に答える