opencv c++ 实现固定窗口中对图片的放大缩小,要求先放大后缩小后图片还是可以看到全貌
时间: 2024-03-09 19:45:02 浏览: 245
基于opencv图片放大
3星 · 编辑精心推荐
可以使用OpenCV的resize函数实现图片的放大缩小,并在固定窗口中显示图片。
首先,需要读取图片并在窗口中显示:
```c++
cv::Mat img = cv::imread("image.jpg");
cv::namedWindow("Image", cv::WINDOW_NORMAL);
cv::imshow("Image", img);
cv::waitKey(0);
```
接下来,可以使用resize函数对图片进行放大缩小。例如,将图片放大两倍:
```c++
cv::Mat resized_img;
cv::resize(img, resized_img, cv::Size(img.cols * 2, img.rows * 2));
```
然后,在新的窗口中显示调整后的图片:
```c++
cv::namedWindow("Resized Image", cv::WINDOW_NORMAL);
cv::imshow("Resized Image", resized_img);
cv::waitKey(0);
```
最后,可以使用resize函数将图片缩小到原来的大小:
```c++
cv::Mat final_img;
cv::resize(resized_img, final_img, img.size());
```
最终,在新的窗口中显示缩小后的图片:
```c++
cv::namedWindow("Final Image", cv::WINDOW_NORMAL);
cv::imshow("Final Image", final_img);
cv::waitKey(0);
```
这样,即使对图片进行了放大和缩小,最终的结果仍然可以看到全貌。完整代码如下:
```c++
#include <opencv2/opencv.hpp>
int main()
{
cv::Mat img = cv::imread("image.jpg");
cv::namedWindow("Image", cv::WINDOW_NORMAL);
cv::imshow("Image", img);
cv::waitKey(0);
cv::Mat resized_img;
cv::resize(img, resized_img, cv::Size(img.cols * 2, img.rows * 2));
cv::namedWindow("Resized Image", cv::WINDOW_NORMAL);
cv::imshow("Resized Image", resized_img);
cv::waitKey(0);
cv::Mat final_img;
cv::resize(resized_img, final_img, img.size());
cv::namedWindow("Final Image", cv::WINDOW_NORMAL);
cv::imshow("Final Image", final_img);
cv::waitKey(0);
return 0;
}
```
阅读全文