gpt4 book ai didi

visual-studio-2010 - 如何在opencv中获取灰色图像的强度指标

转载 作者:行者123 更新时间:2023-12-02 16:42:39 25 4
gpt4 key购买 nike

我有一个图像的16位强度的二进制文件。我已经简短地阅读了这些数据。并使用以下代码创建16位灰度图像。

 IplImage *img=cvCreateImage( cvSize( Image_width, Image_height ), IPL_DEPTH_16S, 1 );
cvSetData(img,Data, sizeof(short )*Image_width);

其中数据是短数组。

然后使用此功能为此图像设置ROI
cvSetImageROI(img, cvRect(crop_start.x, crop_start.y, crop_width, Image_height));

并且投资返回率设置成功。

现在,在设置了ROI之后,我要访问“图像的强度”,这意味着我希望获得裁剪后图像的强度的指针。我已经尝试过此代码来访问强度
short *crop_Imagedata=(short *)img->imageData;

但是这个指针没有给出正确的强度,因为我已经通过调试代码检查了强度。

任何人都可以告诉我如何获得图像强度的指针。

提前致谢

最佳答案

您好,我尝试了以下方法来找到您想做的事情:

IplImage *img=cvCreateImage( cvSize( 15, 15 ), IPL_DEPTH_16S, 1 );
cvSet(img,cvScalar(15));//sets all values to 15

cvSetImageROI(img, cvRect(4, 0, 10, 15));
short *crop_Imagedata=(short *)img->imageData;
((*crop_Imagedata) == 15) // true

您将获得的值(value)不在投资返回率中! IplImage结构的imageData只是一个简单的指针,而不是一个函数!在我看来,opencv的rois并没有得到充分的文档记录和易于使用。也许所有opencv算法都以某种方式使用rois。我使用它们来使用,但是没有标准iplimage结构的自动功能来简单地使用它们。
如果您想使用更多魔术,请尝试使用新的cv::Mat对象...
但是,如果您仍然想使用rois,则必须继续使用
     CvRect roi = cvGetImageROI(img);

方法始终检查位置。之后,您将必须添加roi偏移量:
((short*)(img->imageData + (roi.y+ypos)*img-widthStep))[roi.x+xpos]

记住标准的Opencv是C库而不是C++!顺便说一句,混合cv::Mat rois时可能会有点烦。要将iplimage复制到没有roi的cv::Mat我必须执行以下操作:
CvRect roitmp = cvGetImageROI(ilimage);
cvResetImageROI(ilimage);
cv::Mat tmp = cv::Mat(ilimage).clone();
cvSetImageROI(ilimage,roitmp);

也许这里有人知道与rois合作的正确方法...

关于visual-studio-2010 - 如何在opencv中获取灰色图像的强度指标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11468767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com