私はの画像処理と開発を初めておこないました。私はイメージの三角形のピクセルを取る必要があります。それを行うために私は次のコードを使用しました。残念ながら、私は望ましくない黒い画素を得る。その問題を取り除く私はアルファ値を与えて背景[0]ピクセルを削除しようとしました。(透明な背景)しかし、それは次のエラーを返します。どんな助けもありがとうございます。三角形の画像ピクセルを抽出するエラー
マイコード:
Mat img = cv::imread("/home/fabio/code/lena.jpg", cv::IMREAD_GRAYSCALE);
Mat alpha(img.size(), CV_8UC1, Scalar(0));
//triangle definition (example points)
vector<Point> points;
points.push_back(Point(200, 70));
points.push_back(Point(60, 150));
points.push_back(Point(500, 500));
//apply triangle to mask
fillConvexPoly(alpha, points, Scalar(255));
cv::Mat finalImage = cv::Mat::zeros(img.size(), img.type());
img.copyTo(finalImage, alpha);
imshow("image", finalImage);
Mat dst;
Mat rgb[1];
split(finalImage, rgb);
Mat rgba[2] = { finalImage, alpha };
merge(rgba, 2, dst);
imshow("dst", dst);
エラー:OpenCVのエラー:不正なチャネルの数(ソース画像が1、3または4チャンネルを持っている必要があります)cvConvertImageで、ファイルC:\は\ 2_4_PackSlave-win64の-VC12を構築-shared \ OpenCVの\モジュール\のHighGUI \ SRC \ utils.cpp、代わりにあなたの最後のブロックの行611
入力画像がグレースケールとしてロードされているため、RGBではなく1つのチャンネルのみです。アルファチャンネルを追加すると、表示できない2チャンネルの画像が表示されます。 imshowでの表示中にopenCVがアルファチャンネルを正しく処理しないので、アルファチャンネル機能をテストするために.pngを保存してください。 – Micka