opencv cv_64fc1转cv_8uc!
时间: 2023-09-02 14:01:55 浏览: 121
在OpenCV中,cv_64fc1和cv_8uc1都是图像的数据类型之一。其中,cv_64fc1代表的是双精度浮点型,每个像素点的取值范围在0到1之间,而cv_8uc1代表的是无符号字符型,每个像素点的取值范围在0到255之间。
如果要将cv_64fc1类型的图像转换成cv_8uc1类型的图像,可以通过以下步骤实现:
1. 创建一个与原图像大小相同的目标图像,数据类型为cv_8uc1。
2. 遍历原图像的每个像素点,将其值进行缩放和类型转换,得到对应的目标图像像素值。
3. 将目标图像保存或用于后续操作。
代码示例如下:
```cpp
#include <opencv2/opencv.hpp>
int main() {
// 读取原图像
cv::Mat srcImg = cv::imread("input.jpg", cv::IMREAD_COLOR);
// 将原图像转换成cv_64fc1类型
cv::Mat srcImg64f;
srcImg.convertTo(srcImg64f, CV_64FC1, 1.0 / 255.0);
// 创建目标图像,大小和数据类型与原图像一致
cv::Mat dstImg(srcImg.size(), CV_8UC1);
// 遍历原图像的像素点,进行缩放和类型转换
for (int i = 0; i < srcImg64f.rows; i++) {
for (int j = 0; j < srcImg64f.cols; j++) {
double pixelValue = srcImg64f.at<double>(i, j);
dstImg.at<uchar>(i, j) = static_cast<uchar>(pixelValue * 255.0);
}
}
// 显示和保存目标图像
cv::imshow("Output Image", dstImg);
cv::imwrite("output.jpg", dstImg);
cv::waitKey(0);
return 0;
}
```
通过以上代码,即可将cv_64fc1类型的图像转换成cv_8uc1类型的图像,实现值的缩放和类型转换。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)