opencv 输出图片中某一区域坐标平均值

opencv 输出图片中某一区域坐标平均值,第1张

First we must know the structure of IplImage:

IPL image:

IplImage

  |-- int  nChannels;     // Number of color channels (1,2,3,4)

  |-- int  depth;         // Pixel depth in bits:

  |                       //   IPL_DEPTH_8U, IPL_DEPTH_8S,

  |                       //   IPL_DEPTH_16U,IPL_DEPTH_16S,

  |                       //   IPL_DEPTH_32S,IPL_DEPTH_32F,

  |                       //   IPL_DEPTH_64F

  |-- int  width;         // image width in pixels

  |-- int  height;        // image height in pixels

  |-- char imageData;    // pointer to aligned image data

  |                       // Note that color images are stored in BGR order

  |-- int  dataOrder;     // 0 - interleaved color channels,

  |                       // 1 - separate color channels

  |                       // cvCreateImage can only create interleaved images

  |-- int  origin;        // 0 - top-left origin,

  |                       // 1 - bottom-left origin (Windows bitmaps style)

  |-- int  widthStep;     // size of aligned image row in bytes

  |-- int  imageSize;     // image data size in bytes = heightwidthStep

  |-- struct _IplROI roi;// image ROI when not NULL specifies image

  |                       // region  to be processed

  |-- char imageDataOrigin; // pointer to the unaligned origin of image data

  |                          // (needed for correct image deallocation)

  |

  |-- int  align;         // Alignment of image rows: 4 or 8 byte alignment

  |                       // OpenCV ignores this and uses widthStep instead

  |-- char colorModel[4]; // Color model - ignored by OpenCV

//------------------------------------------------------------------------------int main(int argc, char argv[])

{

    IplImage img=cvLoadImage("c://fruitfsbmp",1);

    CvScalar s;

    for(int i=0;i<img->height;i++){

        for(int j=0;j<img->width;j++){

        s=cvGet2D(img,i,j); // get the (i,j) pixel value

        printf("B=%f, G=%f, R=%f ",sval[0],sval[1],sval[2]);

        sval[0]=111;

        sval[1]=111;

        sval[2]=111;

        cvSet2D(img,i,j,s);//set the (i,j) pixel value

        }

    }

    cvNamedWindow("Image",1);

    cvShowImage("Image",img);

    cvWaitKey(0); //等待按键

    cvDestroyWindow( "Image" );//销毁窗口

    cvReleaseImage( &img ); //释放图像

    return 0;

}

1

求得你的二值图像选定区域的外接矩形位置(左上角xy坐标,长,宽)

2

判断原彩色图中该区域内的rgb值(读rgb值会吧?data=image->imagedata,

data[mstep+n])

3

若符合你假设的条件,在原彩色图中截取(先设定roi区域,然后cvcloneimage,再释放roi区域)

这个是你自己定的呀 要么从其他地方传过来 要么自己从图像上获得

从图像上获得可以采用鼠标响应函数 具体参见>

以上就是关于opencv 输出图片中某一区域坐标平均值全部的内容,包括:opencv 输出图片中某一区域坐标平均值、用Opencv,区域颜色怎么提取求解答、opencv中使用ROI获取感兴趣区域时,如何获取一幅图像中相应的坐标,比如:等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9683125.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存