OpenCV讀入影象,設定大小,按鍵移動影象位置。
阿新 • • 發佈:2019-02-11
歡迎使用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;
}