8

画像フレームで、私は使用します

void ellipse(Mat& img, Point center, Size axes, double angle, double startAngle, double endAngle, const Scalar& color, int thickness=1, int lineType=8, int shift=0)

楕円を描き、楕円の色を緑に設定したい ここに画像の説明を入力[RGB値:(165、206、94)]。だから私はパラメータconst Scalar& color

cv::Scalar(94.0, 206.0, 165.0, 0.0); // as BGR order, suppose the value is 0.0 - 255.0
cv::Scalar(94.0/255.0, 206.0/255.0, 165.0/255.0, 0.0); // suppose the value is 0.0 - 1.0

RGBの代替も試しました。

CV_RGB(165.0, 206.0, 94.0); // as RGB order, suppose the value is 0.0 - 255.0
CV_RGB(165.0/255.0, 206.0/255.0, 94.0/255.0); // suppose the value is 0.0 - 1.0

しかし、表示されている色は白ここに画像の説明を入力[ RGB 値 (255, 255, 255) ] であり、目的の緑ではありません。

この時点で私が見逃したものは何ですか?任意の提案をお願いします。ありがとうございました。

編集:

関連するコード全体をここに入れましょう。OpenCV iOS - Video Processingによると、これは次のCvVideoCamera構成- (void)viewDidLoad;です。

self.videoCamera = [[CvVideoCamera alloc] initWithParentView:imgView];
[self.videoCamera setDelegate:self];
self.videoCamera.defaultAVCaptureDevicePosition = AVCaptureDevicePositionFront;
self.videoCamera.defaultAVCaptureSessionPreset = AVCaptureSessionPreset352x288;
self.videoCamera.defaultAVCaptureVideoOrientation = AVCaptureVideoOrientationPortrait;
self.videoCamera.defaultFPS = 30;
self.videoCamera.grayscaleMode = NO;
[self.videoCamera adjustLayoutToInterfaceOrientation:UIInterfaceOrientationPortrait];

次に、[self.videoCamera start];呼び出された後、(Mat&)imageキャプチャされ、CvVideoCameraDelegate メソッドで処理できます- (void)processImage:(Mat&)image;。楕円を描画するコードは次のとおりです。

- (void)processImage:(Mat&)image {

NSLog(@"image.type(): %d", image.type()); // got 24

// image.convertTo(image, CV_8UC3); // try to convert image type, but with or without this line result the same

NSLog(@"image.type(): %d", image.type()); // also 24

cv::Scalar colorScalar = cv::Scalar( 94, 206, 165 );
cv::Point center( image.size().width*0.5, image.size().height*0.5 );
cv::Size size( 100, 100 );
cv::ellipse( image, center, size, 0, 0, 360, colorScalar, 4, 8, 0 );

}

最終的に、楕円は希望の緑ではなく白のままです。

4

4 に答える 4

19

アルファを 255 に設定すると、この問題を解決できます。スカラー(94,206,165,255)

于 2014-03-19T05:41:43.760 に答える
3

コメントで mrgloom が正しく指し示しているため、画像のタイプ [描画する Mat オブジェクト、つまり ellipse() 関数の Mat &img] が原因である可能性があります。cv::Scalar(94, 206, 165) は、8UC3 タイプの画像に望ましい緑色です。32FC3 画像でこれらの値を設定すると、白色になります。

于 2013-04-10T06:42:39.770 に答える