将以下代码转成python cv::Mat light2(cv::Mat input) { cvtColor(input, input, cv::COLOR_GRAY2BGR); int height = input.rows; int width = input.cols; int channels = input.channels(); double alpha = 3;//像素增加权重,即:每个像素都扩大1.2倍,用于增加图像的对比度 double beta = -200;//用于增加亮度 cv::Mat dst;//输出图像 dst = cv::Mat::zeros(input.size(), input.type());//创建一个都是0的Mat,即纯黑色的mat //下面是增加亮度及对比度的关键代码 for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { dst.at<cv::Vec3b>(y, x)[0] = cv::saturate_cast<uchar>(alpha * input.at<cv::Vec3b>(y, x)[0] + beta); dst.at<cv::Vec3b>(y, x)[1] = cv::saturate_cast<uchar>(alpha * input.at<cv::Vec3b>(y, x)[1] + beta); dst.at<cv::Vec3b>(y, x)[2] = cv::saturate_cast<uchar>(alpha * input.at<cv::Vec3b>(y, x)[2] + beta); } } return dst; }
时间: 2024-02-03 17:01:41 浏览: 83
这段代码是将输入的灰度图像转换为RGB图像,并增强图像的亮度和对比度。以下是转换后的Python代码:
```
import cv2
def light2(input):
input = cv2.cvtColor(input, cv2.COLOR_GRAY2BGR)
height, width, channels = input.shape
alpha = 3
beta = -200
dst = cv2.Mat.zeros(input.shape, input.type())
for y in range(height):
for x in range(width):
dst[y, x, 0] = cv2.saturate_cast(alpha * input[y, x, 0] + beta, 0, 255)
dst[y, x, 1] = cv2.saturate_cast(alpha * input[y, x, 1] + beta, 0, 255)
dst[y, x, 2] = cv2.saturate_cast(alpha * input[y, x, 2] + beta, 0, 255)
return dst
```
需要注意的是,Python中的OpenCV库中的Mat类型与C++中略有不同。在Python中,Mat类型是numpy数组类型,因此在代码中需要使用numpy数组的相关方法来替代C++中的Mat方法。
阅读全文