だから私はバイナリマトリックスを浸食しようとしています。このコードを使用してマトリックスを作成します。
cv::Mat tmp = cv::Mat::zeros( IMG->width, IMG->height, CV_8U );
for( auto i = 0 ; i < IMG->width ; i++)
{
for ( auto j = 0 ; j < IMG->height ; j++)
{
if( cv::pointPolygonTest(cv::Mat(contour),cv::Point(i,j),true) < 0 )
{
tmp.at<double>(i,j) = 255;
}
}
}
使用しているソース画像は次のとおりです。
そして、これは私のループで得られるものです(これは tmp マトリックスです):
したがって、このコードを使用して画像を侵食しようとした後:
int erosion_elem = 1;
int erosion_size = 8;
int erosion_type;
if( erosion_elem == 0 ){ erosion_type = MORPH_RECT; }
else if( erosion_elem == 1 ){ erosion_type = MORPH_CROSS; }
else if( erosion_elem == 2) { erosion_type = MORPH_ELLIPSE; }
Mat element = getStructuringElement( erosion_type,
Size( 2*erosion_size + 1, 2*erosion_size+1 ),
Point( erosion_size, erosion_size ) );
/// Apply the erosion operation
erode( binary, erosion_dst, element );`
したがって、うまくコンパイルされますが、次の行で例外が発生します。
erode( binary, erosion_dst, element );`
サポートされていないデータ型であると表示されます。なぜこの例外が発生するのか、誰にも分かりますか?
マトリックス tmp のデータ型を変更しようとしましたが、同じエラーが発生しました。
ご協力いただきありがとうございます !