1. 程式人生 > >OpenCV讀入影象,設定大小,按鍵移動影象位置。

OpenCV讀入影象,設定大小,按鍵移動影象位置。

歡迎使用Markdown編輯器寫部落格

在OpenCV編寫程式實現以下功能:

  • 讀入影象
  • 設定影象大小
  • 按鍵移動影象位置

實現程式碼

#include "opencv2/core/core.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"

#include <iostream>
#include <ctype.h>

using namespace cv;
using namespace std;

int main(int argc, char
* argv[]) { char* window = "img"; int position_x = 1000, position_y=10,fullscreen=0; //讀取待複製圖片 cv::Mat roi = cv::imread("D:\\P1.jpg", cv::IMREAD_COLOR); cv::Mat roi_2 = cv::imread("D:\\P2.jpg", cv::IMREAD_COLOR); //cv::imshow("roi", roi); //namedWindow(window, CV_WINDOW_AUTOSIZE);
while (true) { //設定黑色背景畫布 cv::Mat image = cv::Mat::zeros(1024, 2048, CV_8UC3);//設定畫布大小 image.setTo(cv::Scalar(0, 0, 0));//設定背景顏色 //設定畫布繪製區域並複製 cv::Rect roi_rect = cv::Rect(10, 10, roi.cols, roi.rows); cv::Rect roi_rect_2 = cv::Rect(position_x, position_y, roi_2.cols, roi_2.rows); roi.copyTo(image(roi_rect)); roi_2.copyTo(image(roi_rect_2)); char
key = cvWaitKey(30); switch (key) { //ROI平移操作 case 'a': position_x -= 1; break; case 's': position_y += 1; break; case 'd': position_x += 1; break; case 'w': position_y -= 1; break; case 'z': resize(roi_2, roi_2, Size(roi_2.cols*0.999, roi_2.rows*0.999), 0, 0, INTER_LINEAR); break; case 'x': resize(roi_2, roi_2, Size(roi_2.cols*1.005, roi_2.rows*1.005), 0, 0, INTER_LINEAR); break; case 'p': fullscreen = 1; break; case 'o': fullscreen = 0; break; } if (key == 27) break; namedWindow("LightField", CV_WINDOW_NORMAL); setWindowProperty("LightField", CV_WND_PROP_FULLSCREEN, fullscreen); cv::imshow("LightField", image); } return 0; }