gpt4 book ai didi

image - 使用 cvRetrieveFrame 从 AVI 读取图像

转载 作者:太空宇宙 更新时间:2023-11-03 23:00:09 24 4
gpt4 key购买 nike

我喜欢检查 cvRetrieveFrame 读取的图像的 RGB 序列。我检查如下

    frame_data = cvRetrieveFrame(readerAvi);
cvShowImage("imageOrg", frame_data.Ptr());
cvWaitKey();
cvDestroyWindow("imageOrg");
IplImage* r = cvCreateImage(cvGetSize(frame_data.Ptr()), IPL_DEPTH_8U, 1); //r
IplImage* g = cvCreateImage(cvGetSize(frame_data.Ptr()), IPL_DEPTH_8U, 1); //g
IplImage* b = cvCreateImage(cvGetSize(frame_data.Ptr()), IPL_DEPTH_8U, 1); //b
cvSplit(frame_data.Ptr(), r, g, b, NULL);
IplImage* c = cvCreateImage(cvGetSize(frame_data.Ptr()), IPL_DEPTH_8U, 3);
cvMerge(r,0,0,0,c);
cvShowImage("imageT", c);
cvWaitKey();
cvDestroyWindow("imageT");

我将 r,g,b 交替放入 cvMerge(r,0,0,0,c);。但我只看到黄色图像。我的测试代码有什么问题?我做了 cvSplit(frame_data.Ptr(), b, g, r, NULL);然后cvMerge(b,NULL,NULL,NULL,c);变成黄色。 cvMerge(NULL,g,NULL,NULL,c); 变为粉红色。并且 cvMerge(NULL,NULL,r,NULL,c); 变为绿色。

谢谢

最佳答案

OpenCV存储图像BGR顺序和cvSplit应该是这样的

cvSplit(src, b, g, r, NULL);

对于蓝色 channel ,合并应该是

cvMerge(b,NULL,NULL,NULL,c);

绿色

cvMerge(NULL,g,NULL,NULL,c);

红色

cvMerge(NULL,NULL,r,NULL,c);

如果在合并其他两个 channel 时获得 RGB 以外的颜色在目标图像中不为空,那么只需在合并之前执行 cvZero(c)

你也可以用一些图片试试下面的代码

    IplImage *src=cvLoadImage("img.jpg",1);

IplImage* r = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U, 1); //r
IplImage* g = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U, 1); //g
IplImage* b = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U, 1); //b
cvSplit(src, b, g, r, NULL);
IplImage* c = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U, 3);

cvMerge(b,NULL,NULL,NULL,c);
cvShowImage("Blue Channel", c);

cvZero(c);
cvMerge(NULL,g,NULL,NULL,c);
cvShowImage("Green Channel", c);

cvZero(c);
cvMerge(NULL,g,NULL,NULL,c);
cvShowImage("Green Channel", c);

cvZero(c);
cvMerge(NULL,NULL,r,NULL,c);
cvShowImage("Red Channel", c);

cvMerge(b,g,r,NULL,c);
cvShowImage("Three Channel", c);
cvWaitKey();

关于image - 使用 cvRetrieveFrame 从 AVI 读取图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20207296/

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