21xrx.com
2025-04-01 15:48:02 Tuesday
文章检索 我的文章 写文章
C++ 简单放大镜代码,变焦提供 3 档位333
2023-06-27 06:00:02 深夜i     14     0
C++ 放大镜 代码 变焦 档位

C++ 简单放大镜代码

放大镜是一种常见的图像处理工具,可以让我们更加清晰地观察图像中的细节。下面是一个简单的 C++ 放大镜代码,支持三档变焦。

代码如下:

#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;
int main()
{
  Mat original = imread("picture.jpg", CV_LOAD_IMAGE_COLOR);
  Mat zoomed; // 放大后的图像
  namedWindow("Zoomed Image", WINDOW_NORMAL);
  resizeWindow("Zoomed Image", 600, 400); // 设置窗口大小
  // 显示原图
  imshow("Original Image", original);
  while (true)
  {
    int key = waitKey(0);
    if (key == 27) // 按下ESC键退出
      break;
    else if (key == 49) // 按下数字1键,放大1倍
      resize(original, zoomed, Size(original.cols*2, original.rows*2));
    else if (key == 50) // 按下数字2键,放大2倍
      resize(original, zoomed, Size(original.cols*3, original.rows*3));
    else if (key == 51) // 按下数字3键,放大3倍
      resize(original, zoomed, Size(original.cols*4, original.rows*4));
    // 显示放大后的图像
    imshow("Zoomed Image", zoomed);
  }
  return 0;
}

代码解析:

1. 加载原始图像,用 `Mat` 类型保存。

Mat original = imread("picture.jpg", CV_LOAD_IMAGE_COLOR);

2. 创建一个新的 `Mat` 对象 `zoomed`,用来保存放大后的图像。

Mat zoomed;

3. 创建一个窗口,用 `namedWindow` 函数和 `WINDOW_NORMAL` 参数,可设置窗口大小。

namedWindow("Zoomed Image", WINDOW_NORMAL);
resizeWindow("Zoomed Image", 600, 400);

4. 显示原始图像,用 `imshow` 函数。

imshow("Original Image", original);

5. 进入循环,等待按键事件。

while (true)
{
  int key = waitKey(0);
  ...
}

6. 如果按下了 ESC 键(ASCII 码为 27),则退出循环。

if (key == 27)
  break;

7. 如果按下数字键 1,则将原始图像放大 1 倍,用 `resize` 函数实现。

if (key == 49) // 按下数字1键,放大1倍
  resize(original, zoomed, Size(original.cols*2, original.rows*2));

8. 如果按下数字键 2,则将原始图像放大 2 倍。

if (key == 50) // 按下数字2键,放大2倍
  resize(original, zoomed, Size(original.cols*3, original.rows*3));

9. 如果按下数字键 3,则将原始图像放大 3 倍。

if (key == 51) // 按下数字3键,放大3倍
  resize(original, zoomed, Size(original.cols*4, original.rows*4));

10. 显示放大后的图像,用 `imshow` 函数。

imshow("Zoomed Image", zoomed);

随着数字键的按下,放大镜的倍数也会相应提高,并在窗口中显示对应的放大后的图像。这个简单的 C++ 放大镜代码可以让您更好地观察不同图像的细节。

  
  

评论区

请求出错了