opencv实现模糊图像清晰化处理的代码
时间: 2023-05-13 09:06:41 浏览: 583
以下是使用OpenCV实现模糊图像清晰化处理的代码:
```python
import cv2
# 读取图像
img = cv2.imread('blurry_image.jpg')
# 高斯模糊
blur = cv2.GaussianBlur(img, (5, 5), 0)
# 锐化
kernel = np.array([[-1,-1,-1], [-1,9,-1], [-1,-1,-1]])
sharp = cv2.filter2D(blur, -1, kernel)
# 显示结果
cv2.imshow('Original Image', img)
cv2.imshow('Sharp Image', sharp)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
这段代码首先读取了一张模糊的图像,然后使用高斯模糊对图像进行处理,接着使用锐化卷积核对处理后的图像进行锐化处理,最后显示处理前后的图像。
相关问题
opencv实现模糊灰色图像的清晰化代码
以下是使用OpenCV实现模糊灰色图像的清晰化代码:
```python
import cv2
# 读取灰度图像
img = cv2.imread('gray_image.jpg', cv2.IMREAD_GRAYSCALE)
# 应用高斯模糊
blurred = cv2.GaussianBlur(img, (5, 5), 0)
# 应用拉普拉斯算子
laplacian = cv2.Laplacian(blurred, cv2.CV_64F)
# 将结果转换为8位灰度图像
laplacian = cv2.convertScaleAbs(laplacian)
# 显示结果
cv2.imshow('Sharpened Image', laplacian)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
这段代码可以对灰度图像进行模糊处理,然后使用拉普拉斯算子进行清晰化处理。
qt+opencv3模糊图像变清晰代码
在Qt中使用OpenCV库可以实现更高级的图像处理功能,包括图像清晰化。下面是一个使用Qt和OpenCV 3实现图像清晰化的代码示例:
```cpp
#include <QCoreApplication>
#include <QImage>
#include <QDebug>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
cv::Mat QImageToMat(const QImage& image)
{
cv::Mat mat(image.height(), image.width(), CV_8UC4, const_cast<uchar*>(image.bits()), image.bytesPerLine());
cv::Mat result;
cv::cvtColor(mat, result, cv::COLOR_RGBA2BGR);
return result;
}
QImage MatToQImage(const cv::Mat& mat)
{
cv::Mat temp;
cv::cvtColor(mat, temp, cv::COLOR_BGR2RGB);
QImage image(temp.data, temp.cols, temp.rows, static_cast<int>(temp.step), QImage::Format_RGB888);
return image.copy();
}
QImage sharpenImage(const QImage& input, double sigma, double threshold, double amount)
{
cv::Mat src = QImageToMat(input);
cv::Mat dst;
cv::GaussianBlur(src, dst, cv::Size(0, 0), sigma);
cv::addWeighted(src, 1.0 + amount, dst, -amount, 0, dst);
cv::Mat mask;
cv::cvtColor(src, mask, cv::COLOR_BGR2GRAY);
cv::threshold(mask, mask, threshold, 255, cv::THRESH_BINARY);
cv::Mat result;
src.copyTo(result, mask);
return MatToQImage(result);
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QImage inputImage("input.jpg");
QImage outputImage = sharpenImage(inputImage, 3.0, 128.0, 0.5);
outputImage.save("output.jpg");
return a.exec();
}
```
在这个示例中,我们使用了OpenCV的GaussianBlur函数实现了高斯模糊操作,并使用addWeighted函数实现了图像锐化操作。我们还使用了OpenCV的cvtColor和threshold函数来创建一个掩码,以便仅对图像中的高对比度区域进行锐化操作。最后,我们使用QImageToMat和MatToQImage函数将OpenCV的Mat类型转换为Qt的QImage类型。
您可以根据需要调整sigma、threshold和amount参数来实现您想要的效果。