Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OpenCV默认存储格式_Opencv - Fatal编程技术网

OpenCV默认存储格式

OpenCV默认存储格式,opencv,Opencv,OpenCV使用的默认(像素)存储格式是什么 我知道它是BGR,但它是BGR32吗?BGR16? 是打包的还是平面的 你能给我建议一个找到它的方法吗 谢谢你的帮助 [编辑]上下文:实际上,我正在尝试将OpenCV与另一个名为MIL的库(Matrox Imaging library)一起使用。我需要抓取一个MIL图像,然后将其转换为OpenCV图像。这就是为什么我需要知道默认像素格式,以配置MIL。这取决于您管理图像的方式:例如,您是否使用imread从文件中加载了图像? 看一看imread,以彩

OpenCV使用的默认(像素)存储格式是什么

我知道它是BGR,但它是BGR32吗?BGR16? 是打包的还是平面的

你能给我建议一个找到它的方法吗

谢谢你的帮助


[编辑]上下文:实际上,我正在尝试将OpenCV与另一个名为MIL的库(Matrox Imaging library)一起使用。我需要抓取一个MIL图像,然后将其转换为OpenCV图像。这就是为什么我需要知道默认像素格式,以配置MIL。

这取决于您管理图像的方式:例如,您是否使用imread从文件中加载了图像? 看一看imread,以彩色jpeg为例,您将拥有3通道格式,总容量为24位。你能说得更具体些吗

我不知道它是否有用,但我在将图像从Android位图(作为字节数组RGBA888传递到OpenCV)转换为OpenCV图像(BGR888)时遇到了类似的问题。 下面是我如何解决它的

cv::Mat orig_image1(orig_height, orig_width, CV_8UC4, image_data);   

int from_to[] = { 0, 2,  1, 1,  2, 0};    
cv::Mat image(orig_height, orig_width, CV_8UC3);   
cv::mixChannels(&orig_image1, 1, &image, 1, from_to, 3);
orig_image1.release();

这取决于您管理图像的方式:例如,您是否使用imread从文件中加载了图像? 看一看imread,以彩色jpeg为例,您将拥有3通道格式,总容量为24位。你能说得更具体些吗

我不知道它是否有用,但我在将图像从Android位图(作为字节数组RGBA888传递到OpenCV)转换为OpenCV图像(BGR888)时遇到了类似的问题。 下面是我如何解决它的

cv::Mat orig_image1(orig_height, orig_width, CV_8UC4, image_data);   

int from_to[] = { 0, 2,  1, 1,  2, 0};    
cv::Mat image(orig_height, orig_width, CV_8UC3);   
cv::mixChannels(&orig_image1, 1, &image, 1, from_to, 3);
orig_image1.release();

图像格式由创建图像时的标志设置,例如
CV_8UC3
表示8位像素、无符号、3色通道。在彩色图像中,像素顺序为BGR,数据按行顺序存储

数据不是在像素级别打包的-它是3字节/像素(BGRA是一些GPU调用的选项)

数据可以在行级别进行打包,如果一行中的像素数*字节数/像素数不是4的倍数,那么数据将被零填充到下一个32位边界。调用mat.ptr(n)返回指向第n行开头的指针


请注意,您可以通过将数据指针从MIL图像传递到cv::Mat的ctor,与另一种可适配图像格式共享内存。创建图像时,图像格式由标志设置,例如
cv_8UC3
表示8位像素、无符号、3色通道。在彩色图像中,像素顺序为BGR,数据按行顺序存储

数据不是在像素级别打包的-它是3字节/像素(BGRA是一些GPU调用的选项)

数据可以在行级别进行打包,如果一行中的像素数*字节数/像素数不是4的倍数,那么数据将被零填充到下一个32位边界。调用mat.ptr(n)返回指向第n行开头的指针


请注意,通过将MIL图像中的数据指针传递到cv::Mat的ctor,您可以与另一种兼容图像格式共享内存。实际上,我正在尝试将OpenCV与另一个名为MIL的库(Matrox Imaging library)一起使用。我需要抓取一个MIL图像,然后将其转换为OpenCV图像。这就是为什么我需要知道默认的像素格式,以配置MIL.OpenCV将图像处理为cv::Mat,并且它可以具有不同的深度,如您在此处看到的:(搜索):::深度”)BGR 888格式确实常用,因此我建议您将MIL图像转换为该格式。我现在不知道MIL是否提供了一个像素字节流,但您可能想看看这个问题,如果您需要交换一些通道,也可以看看cv::MixChannel函数。谢谢!我将尝试你的建议。实际上,我正在尝试将OpenCV与另一个名为MIL(Matrox Imaging library)的库一起使用。我需要抓取一个MIL图像,然后将其转换为OpenCV图像。这就是为什么我需要知道默认的像素格式,以配置MIL.OpenCV将图像处理为cv::Mat,并且它可以具有不同的深度,如您在此处看到的:(搜索):::深度”)BGR 888格式确实常用,因此我建议您将MIL图像转换为该格式。我现在不知道MIL是否提供了一个像素字节流,但您可能想看看这个问题,如果您需要交换一些通道,也可以看看cv::MixChannel函数。谢谢!我试试你的建议。谢谢!顺便说一句,我已经尝试过将MIL图像缓冲区传递到Mat one的ctor,但它不起作用:/Care更具体一点?这是不允许的,或者给了您错误的结果?我无法将Mil图像传递到Mat的ctor的原因是,我从Mil获取的图像具有OpenCV无法识别的类型(Mil_ID)。@Thibel这只是图像的句柄,有一个调用(我忘了是什么)来获取实际的Mil图像数据点。您可能是指MbufInquire(…)(或MbufGetColor(…),我已经尝试过了,但是我得到了一个奇怪的图像。这是图像的一个例子。谢谢!顺便说一下,我已经尝试过将MIL图像缓冲区传递到Mat one的ctor,但是没有成功:/Care更具体一点?这是不允许的,或者给了你错误的结果?我无法将MIL图像传递到Mat one的ctor的原因是e我从MIL获取的图像有一个OpenCV无法识别的类型(MIL_ID)。@Thibel这只是图像的句柄,有一个调用(我忘了是什么)来获取实际的MIL图像数据点。您可能是指Mbuffinquire(…)(或MbufGetColor(…),我已经尝试过了,但我得到了一个奇怪的图像。这是图像的一个示例。