Quantcast
Channel: OpenCV Q&A Forum - RSS feed
Viewing all articles
Browse latest Browse all 53

bgr image grayscale

$
0
0
I want to develop some color to grayscale algorithms in order to get an idea about how important a grayscale algorithm could be for feature extraction methods (lbp, hog, ...) and object recognition methods. So, to start, I implemented a simple test algorithm in order to implement opencv grayscale conversion [cvtcolor opencv](http://docs.opencv.org/modules/imgproc/doc/miscellaneous_transformations.html#cvtcolor). My implementation is as follows: /// void cvtColor2(cv::InputArray _src, cv::OutputArray _dst, int code, int dstCn=0); /// code and dstCn are not used by the moment but i included them as the original cvtColor method void cvtColor2(cv::InputArray _src, cv::OutputArray _dst, int code, int dstCn){ //CV_BGR2GRAY: Y <-- 0.299*R + 0.587*G + 0.114*B static const float coeffs0[] = { 0.299f, 0.587f, 0.114f }; Mat src = _src.getMat(); _dst.create(src.size(), CV_8UC1); Mat dst = _dst.getMat(); for( int i = 0; i < src.rows; i++ ) { for( int j = 0; j < src.cols; j++ ) { Vec3b scalarColor = src.at(i,j); dst.at(i,j) = scalarColor.val[0]*coeffs0[2] + scalarColor.val[1]*coeffs0[1] + scalarColor.val[2]*coeffs0[0]; } } } Then, i test this algorithm: Mat image = imread("...."); Mat grayImage, grayImage2; cvtColor(image,grayImage,CV_BGR2GRAY); cvtColor2(image,grayImage2,CV_BGR2GRAY); I don't get the same result. For some pixels, there is one intensity pixel difference between cvtColor2 and cvtColor. I saw this other question [HERE](http://answers.opencv.org/question/8859/converting-3-channel-bgr-pic-to-grayscale-by-hand/) but I didn't find a solution. I don't know where the error is. Any help will be appreciated. Thanks in advance

Viewing all articles
Browse latest Browse all 53

Trending Articles