プロジェクトのシナリオ:
opencv の kmeans モジュールによるリモート センシング画像のセグメンテーション
問題の説明
error: Unknown C++ exception from OpenCV code
c = (cv.TERM_CRITERIA_EPS+ cv.TERM_CRITERIA_MAX_ITER,10, 0.1)
k=2
ret, label, center = cv.kmeans(image, k, None, c, 10, cv.KMEANS_RANDOM_CENTERS)
原因分析:
opencvのバージョンが高すぎてPythonのバージョンが低いという人もいます。バージョンを変えるのは面倒だと思ったので試しませんでした。そこで、opencv に関する情報を確認したところ、
処理するデータが要素ごとに 1 行を占有する必要がある場合、ここでは単一の特徴をクラスタリングしているため、データの形状は n 行 1 列である必要があり、n は次のようなものであることがわかりました。要素の数。
解決:
kmeans を実行する前に次のコードを追加します: image_1 = image.reshape((image.shape[0]*image.shape[1],1))