画像フレームで、私は使用します
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 );
}
最終的に、楕円は希望の緑ではなく白のままです。