opencv 将灰度图复制到BGR图 C++
时间: 2023-06-28 19:08:57 浏览: 55
在 OpenCV 中,可以使用 cv::cvtColor() 函数将灰度图转换为 BGR 图像,然后使用 cv::cvtColor() 函数将 BGR 图像转换为灰度图像。以下是将灰度图像复制到 BGR 图像的示例代码:
```c++
#include <opencv2/opencv.hpp>
int main()
{
cv::Mat gray_image = cv::imread("gray_image.jpg", cv::IMREAD_GRAYSCALE);
// Convert gray image to BGR image
cv::Mat bgr_image;
cv::cvtColor(gray_image, bgr_image, cv::COLOR_GRAY2BGR);
// Save BGR image
cv::imwrite("bgr_image.jpg", bgr_image);
return 0;
}
```
在上面的示例代码中,我们首先使用 cv::imread() 函数加载灰度图像,然后使用 cv::cvtColor() 函数将其转换为 BGR 图像。最后,我们使用 cv::imwrite() 函数将 BGR 图像保存到磁盘上。
注意:在将 BGR 图像转换为灰度图像时,应使用 cv::COLOR_BGR2GRAY 参数。
相关问题
c++ opencv转灰度图
使用OpenCV库将彩色图像转换为灰度图像的C++代码如下:
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
// 读取彩色图像
Mat image = imread("test.jpg");
// 转换为灰度图像
Mat gray;
cvtColor(image, gray, COLOR_BGR2GRAY);
// 显示灰度图像
imshow("Gray Image", gray);
waitKey(0);
return 0;
}
```
其中,`cvtColor()`函数用于将彩色图像转换为灰度图像,第一个参数为输入图像,第二个参数为输出图像,第三个参数为颜色空间转换代码,`COLOR_BGR2GRAY`表示将BGR格式的彩色图像转换为灰度图像。
用C++ Opencv 对灰度图 shiftcopy
假设你有一张灰度图像 `src`,要对其进行 shiftcopy 操作,即将其向右平移 50 个像素,并且将右侧空缺的地方用黑色填充。
可以按照以下步骤实现:
1. 创建一个宽度为 `src.cols + 50`,高度为 `src.rows` 的黑色图像 `dst`。
2. 将 `src` 复制到 `dst` 的右侧,横坐标从 50 开始。
3. 将 `dst` 赋值给 `src`,即完成了 shiftcopy 操作。
下面是示例代码:
```c++
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
Mat src = imread("gray_image.png", IMREAD_GRAYSCALE);
Mat dst(src.rows, src.cols + 50, CV_8UC1, Scalar(0));
Rect roi(50, 0, src.cols, src.rows);
src.copyTo(dst(roi));
src = dst.clone();
imshow("src", src);
waitKey();
return 0;
}
```
注意,由于 OpenCV 默认使用 BGR 格式,因此读取灰度图像时需要使用 `IMREAD_GRAYSCALE` 参数。另外,在进行 `src.copyTo(dst(roi))` 操作时,需要使用一个 `Rect` 对象来指定源图像在目标图像中的位置和大小。