cv::Scalar not displaying expected color
c++, colors, drawellipse, ios, opencv
Solution
Set alpha to 255 can fix this problem. Scalar(94,206,165,255)
Problem
On an image frame, I use `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)` to draw an ellipse and I want to set the ellipse color to green [ RGB value : (165, 206, 94) ]. So I set the parameter `const Scalar& color` to ``` 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 ``` I also tried RGB alternative. ``` 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 ``` But the color being displayed is white [ RGB value (255, 255, 255) ] , not the desired green one. What I missed at this point? Any suggestion please. Thank you. EDIT: Let me put whole related code here. According to OpenCV iOS - Video Processing, this is the `CvVideoCamera` config in `- (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]; ``` Then after `[self.videoCamera start];` called, the `(Mat&)image` would be captured and can be processed in the CvVideoCameraDelegate method `- (void)processImage:(Mat&)image;` and here are the code to draw an ellipse: ``` - (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 ); ``` } Eventually, the ellipse is still in white, not the desired green one.