接着上一篇的图像灰度处理后,接下来对灰度图像进行颜色识别,本人的方法比较简单,有其他好方法的可以提出来,大家共同进步。
目的:
将所有一副灰度图像中像素点灰度大于128的变为白色(设置为255),小于的128的变为黑色(设置为0) 。
然后统计出黑白像素点的个数。
下面是代码:
#include <stdio.h> #include <stdlib.h> #include <opencv/cv.h> #include <opencv/highgui.h> int main(int argc, char* argv[]) { CvScalar pixel; int i = 0, j = 0; int numw = 0, numb = 0; if(argc != 2) { printf("Usage:./test xxx.jpg\n"); return 1; } IplImage* img = cvLoadImage(argv[1], CV_LOAD_IMAGE_ANYCOLOR|CV_LOAD_IMAGE_ANYDEPTH); if(NULL == img) { printf("Load Image Fail!\n"); return 2; } //访问图像每一个像素点 for(i=0; i<img->height; i++) { for(j=0; j<img->width; j++) { pixel = cvGet2D(img, i, j); if(pixel.val[0] > 128) { pixel.val[0] = 255;//8位单通道图像在pixel.val[0]中存储像素 ++numw;//统计白点个数 } else { pixel.val[0] = 0; ++numb;//统计黑点个数 } cvSet2D(img, i, j, pixel); } } printf("Image Height:%d, Width:%d\n", img->height, img->width); printf("White num:%d, Black num:%d\n", numw, numb); cvSaveImage("Handle.jpg", img, 0); cvReleaseImage(&img); return 0; }
这样处理后的图像相当于把灰度图像颜色加深一个层次,方便了后续的图像处理。
七.使用OpenCv进行图像颜色识别,布布扣,bubuko.com
原文:http://blog.csdn.net/scottly1/article/details/23046847