首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将4通道图像转换为3通道图像

将4通道图像转换为3通道图像
EN

Stack Overflow用户
提问于 2013-09-26 20:51:35
回答 3查看 26.1K关注 0票数 8

我使用的是OpenCV 2.4.6。我正在尝试转换一个4通道的RGB IplImage到4通道的HSV图像。下面是我的代码。出现错误"OpenCV Error: Assertion failed in unknown function“。我认为cvCvtColor支持3通道图像。有没有办法将4通道RGB转换为HSV或将4通道RGB转换为3通道RGB?

代码语言:javascript
复制
 IplImage*  mCVImageColor = cvCreateImageHeader(cvSize(640,480), IPL_DEPTH_8U, 4);
 /*Doing something*/
 IplImage* imgHSV = cvCreateImage(cvGetSize(mCVImageColor), IPL_DEPTH_8U, 4);
 cvCvtColor(mCVImageColor, imgHSV, CV_BGR2HSV); //This line throws exception
EN

回答 3

Stack Overflow用户

发布于 2013-09-26 21:04:58

常见的假设是第四个通道是alpha (A)通道。因此,正确的转换代码为:

代码语言:javascript
复制
cvCvtColor(mCVImageColor, imgHSV, CV_BGRA2HSV);

请注意BGRA中的A

另外,我想从您的语法(mCVImage...)您正在使用C++。那为什么不使用OpenCV的C++接口呢?如果您选择go C++,文档仍然过时,您可以找到OpenCV 2.4.6 here的最新颜色转换代码。

对于您的情况,正确的颜色转换代码(C++)是:cv::COLOR_BGRA2HSV。但是如果你使用的是C++应用程序接口,那么你应该使用cv::Mat对象并调用函数cv::cvtColor(...),而不是使用IplaImagecv前缀函数。

票数 9
EN

Stack Overflow用户

发布于 2017-02-26 15:45:07

在使用OpenCV 3.1时,我遇到了这个问题,但sansuiso的答案对我不起作用。

相反,我使用以下命令将4通道颜色(RGBA)转换为3通道颜色(RGB):

代码语言:javascript
复制
cvtColor(inputMat, outputMat, CV_BGRA2BGR);

然后,我验证了每种类型的channels(),并能够确认alpha通道已被剥离,并且我的函数正常工作,需要三个通道图像。

票数 7
EN

Stack Overflow用户

发布于 2018-06-05 03:10:12

我有一个想法,删除通道,将其转换为白色。然后,您可以使用opencv执行其他操作。此方法将使用PIL包。

代码语言:javascript
复制
image = Image.open("original.png")
image.convert("RGBA") # Convert this to RGBA if possible

pixel_data = image.load()

if image.mode == "RGBA":
# If the image has an alpha channel, convert it to white
# Otherwise we'll get weird pixels
for y in range(image.size[1]): # For each row ...
    for x in range(image.size[0]): # Iterate through each column ...
        # Check if it's opaque
        if pixel_data[x, y][3] < 255:
            # Replace the pixel data with the colour white
            pixel_data[x, y] = (255, 255, 255, 255)
image.save("noAlphaChannelImage.png")
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19028830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档