OPENCV的CV_16FC3数据类型怎么转为CV_8UC3
时间: 2023-08-04 07:07:16 浏览: 207
要将CV_16FC3数据类型转换为CV_8UC3,可以使用 OpenCV 中的convertScaleAbs()函数。
首先,将数据类型转换为CV_8U,然后使用convertScaleAbs()函数将像素值转换为8位无符号整数。这样就可以将CV_16FC3数据类型转换为CV_8UC3。
以下是示例代码:
```
cv::Mat img_16FC3 = ...; // 假设img_16FC3是CV_16FC3类型的图像
cv::Mat img_8UC3;
img_16FC3.convertTo(img_8UC3, CV_8U); // 将数据类型转换为CV_8U
cv::Mat img_8UC3_final;
cv::convertScaleAbs(img_8UC3, img_8UC3_final); // 将像素值转换为8位无符号整数
```
在上面的代码中,img_8UC3_final是转换后的CV_8UC3类型的图像。
相关问题
CV_8UC1是OpenCV中的一种图像类型,类似于CV_8UC1的数据还有谁
在OpenCV中,除了CV_8UC1之外,还有其他类似的图像类型,如:
- CV_8UC2:表示8位无符号整数,2通道图像;
- CV_8UC3:表示8位无符号整数,3通道图像;
- CV_8UC4:表示8位无符号整数,4通道图像;
- CV_16UC1:表示16位无符号整数,1通道图像;
- CV_16UC2:表示16位无符号整数,2通道图像;
- CV_16UC3:表示16位无符号整数,3通道图像;
- CV_16UC4:表示16位无符号整数,4通道图像;
- CV_32FC1:表示32位浮点数,1通道图像;
- CV_32FC2:表示32位浮点数,2通道图像;
- CV_32FC3:表示32位浮点数,3通道图像;
- CV_32FC4:表示32位浮点数,4通道图像。
这些图像类型主要是根据图像的通道数和像素位数不同而区分的。
#include "Gt.h" #include <opencv2/opencv.hpp> using namespace cv; using namespace std; /* * 方法2 单核 */ class LIME_2 { public: Mat img,Wv,Wh; LIME_2(){} Mat maxMAT(cv::Mat &input) { Gt gt; gt.st(); Mat output(input.size(), CV_32FC1); uchar temp; for (int i = 0; i < input.size().height; i++) { for (int j = 0; j < input.size().width; j++) { temp = fmax(input.at<Vec3f>(i, j)[0], input.at<Vec3f>(i, j)[1]); output.at<float>(i, j) = fmax(input.at<Vec3f>(i, j)[2], temp); } } gt.et(); gt.show("max"); return output; } Mat Repeat(Mat& m) { Gt gt; gt.st(); int he = m.size().height; int wi = m.size().width; Mat R(he, wi, CV_32FC3); for (int i = 0; i < he; i++) { for (int j = 0; j < wi; j++) { R.at<Vec3f>(i, j)[0] = m.at<float>(i, j); R.at<Vec3f>(i, j)[1] = m.at<float>(i, j); R.at<Vec3f>(i, j)[2] = m.at<float>(i, j); } } gt.et(); gt.show("repeat");
你好!这段代码看起来是使用 OpenCV 进行图像处理的。它包含了一个名为 LIME_2 的类,并定义了一些成员变量和成员函数。
在类的构造函数中,没有进行任何初始化操作。
maxMAT() 函数是类的成员函数,用于对输入图像进行最大化处理。它首先创建一个与输入图像大小相同的输出图像 output,并将其初始化为 CV_32FC1 类型的图像。
然后,它遍历输入图像的每个像素点,将其 RGB 通道中的最大值赋给临时变量 temp,然后再将 temp 和蓝色通道的值取最大值,并将结果赋给输出图像对应位置的像素。
Repeat() 函数用于将输入的单通道图像复制为三通道图像。它首先创建一个与输入图像大小相同的输出图像 R,并将其初始化为 CV_32FC3 类型的图像。
然后,它遍历输入图像的每个像素点,将输入图像对应位置的值分别复制给输出图像的三个通道。
在这两个函数中,都使用了 Gt 类来计算并展示函数运行的时间。在每个函数的开始处调用了 gt.st() 来记录开始时间,在函数结束处调用了 gt.et() 来记录结束时间,并使用 gt.show() 来展示经过的时间。
需要注意的是,这段代码中使用了一些 OpenCV 的函数和数据结构,如 Mat、Vec3f 等。
如果你有任何问题,请随时提问!
阅读全文