Su una cornice immagine, io usocv :: Scalar non mostrare il colore previsto
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)
per disegnare un'ellisse e voglio impostare il colore ellisse verde [valore RGB: (165, 206 , 94)]. così mi sono messo il parametro const Scalar& color
a
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
Ho provato anche RGB alternativa.
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
Ma il colore che viene visualizzato è bianco [valore RGB (255, 255, 255)], non quella verde desideri.
Cosa mi è mancato a questo punto? Qualsiasi suggerimento per favore Grazie.
EDIT:
Mettiamola tutto il codice relativo qui. Secondo OpenCV iOS - Video Processing, questo è il CvVideoCamera
configurazione 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];
Poi dopo [self.videoCamera start];
chiamata, il (Mat&)image
sarebbe catturato e possono essere elaborati nel metodo CvVideoCameraDelegate - (void)processImage:(Mat&)image;
e qui il codice per disegnare un'ellisse:
- (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);
}
Infine, l'ellisse è ancora in bianco, non quella verde desideri.
Controllare la parte restante del codice e accertarsi di non modificare il valore del colore da qualche altra parte. La porzione che hai fornito mostra perfettamente il colore verde previsto nella mia macchina. – Barshan
forse hai un tipo di immagine float? che hanno un range di valori [0 1]? – mrgloom
@Barshan Das Ho controllato e commentato il resto del codice ma il colore è rimasto lo stesso. Qual è il lavoro per te? – Protocole