OpenCV默认存储格式
什么是OpenCV使用的默认(像素)存储格式?
我知道这是BGR,但它是BGR32吗? BGR16? 它是打包还是平面?
你能建议我找到一种方法吗?
感谢您的帮助。
[编辑]上下文:其实我试图使用OpenCV与另一个名为MIL(Matrox Imaging Library)的库。 我需要用MIL获取图像,然后将其转换为OpenCV图像。 这就是为什么我需要知道默认像素格式,以配置MIL。
图像格式由创建图像时的标志设置,例如CV_8UC3
表示8位像素,无符号3色通道。 在彩色图像中,像素顺序是BGR,数据按行顺序存储。
数据在像素级没有打包 - 它是3bytes /像素(BGRA是某些GPU调用的选项)。
如果一行像素的数量*字节数/像素数不是4的倍数,则数据可以打包在行级别,那么数据用零填充到下一个32位边界。 调用mat.ptr(n)返回一个指向'n'行开始的指针
请注意,您可以通过将数据指针从MIL映像传递到cv :: Mat的ctor来与另一个可兼容图像格式共享内存
这取决于你管理图像的方式:你是否用imread从一个文件中加载它? 看看这里的imread,例如一个彩色jpeg,你将有一个3通道格式,总共24位。 你可以说得更详细点吗?
我不知道它是否有用,但是在将Android Bitmap(作为字节数组RGBA8888传递给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();
链接地址: http://www.djcxy.com/p/89753.html