java - 具有特定边框颜色和特定背景颜色的裁剪矩形 JAVA

标签 java image opencv javacv

我有一个内部有一些矩形的图像。我需要的是使用 (Java) 或 JavaCV 只裁剪具有红色边框和白色背景的矩形。

例如,我有一张带车牌的汽车图片。车牌上的每个字母周围都有红色边框矩形和白色背景。

我正在寻找的是裁剪单个图像中的每个字母。字母由每个字母周围的红色边框矩形和白色背景标识。

有什么建议吗? 谢谢

最佳答案

  1. 将颜色空间更改为 HSV

     IplImage* imgHSV = cvCreateImage(cvGetSize(img), 8, 3);
     cvCvtColor(img, imgHSV, CV_BGR2HSV);
    
  2. 只获取色调 channel :

    cvSplit( imgHSV, h_plane, s_plane, v_plane, 0 );
    
  3. 进行阈值处理以找到红色:

    cvInRangeS(h_plane, cvScalar(x, x, x), cvScalar(x, x, x), imgThreshed);
    

    x - HSV 颜色模型中的红色范围。

    在此之后,您将获得黑白图像,其中白色是原始图像上的红色(如您所说,它们应该是矩形)。

  4. 然后使用 cvFindContours 函数。

    int contoursCont = cvFindContours( imgThreshed, storage,&contours,sizeof(CvContour),CV_RETR_LIST,CV_CHAIN_APPROX_SIMPLE,cvPoint(0,0));
    
  5. 要边界框(矩形)使用(对于每个轮廓):

    CvBox2D box = cvMinAreaRect2( @current_contour@,
                            CvMemStorage* storage CV_DEFAULT(NULL))
    

    要检查背景颜色,请计算其直方图并检查 bin 的值是否仅为 255 和 0(它们是白色和黑色的值)。

希望,这会有用!

关于java - 具有特定边框颜色和特定背景颜色的裁剪矩形 JAVA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14554277/

相关文章:

jQuery 如何同时做事

java - 自然特征追踪 - 增强现实

android - 使用android opencv打印出矩阵

java - 如何用Tablayout清除Viewpager的缓存内存

Java选择一种从外部文件读取数据的方式

image - 以编程方式 "smudge"图像的最佳方法是什么?

php - 显示 PHP mysql 表中的图像

python - 在 OpenCV Python 中裁剪矩形

java - 在gradle中将文件从一个文件夹复制到另一个文件夹

java - 在spring中,prototype和singleton在性能上有区别吗?