为什么openCV的convertto功能不起作用?

man*_*ans 9 c++ opencv alpha-transparency

我有一个图像,有4个通道,4 * UINT8格式.

我试图将其转换为3通道浮点数,我正在使用此代码:

images.convertTo(images,CV_32FC3,1/255.0);
Run Code Online (Sandbox Code Playgroud)

转换后,图像采用浮动格式,但仍有4个通道.如何摆脱OpenCV中的第4个(alpha)频道?

her*_*tao 12

正如@AldurDisciple所说,Mat::convertTo()旨在用于更改数据类型Mat,而不是用于更改通道数.

要解决这个问题,您应该将其分为两个步骤:

cvtColor(image, image, CV_BGRA2BGR);       // 1. change the number of channels
image.convertTo(image, CV_32FC3, 1/255.0); // 2. change type to float and scale
Run Code Online (Sandbox Code Playgroud)

  • @Kabyle`1/255.0`这里是比例因子,它将值"[0,255]"转换为"[0,1]".有关详细信息,请参阅[`Mat :: convertTo()`](http://docs.opencv.org/modules/core/doc/basic_structures.html?highlight=convertto#mat-convertto)的文档. (5认同)