Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "opencv2\opencv.hpp"
- #include <vector>
- #include <cmath>
- #include <iostream>
- using namespace cv;
- using namespace std;
- class ImgWindow {
- public:
- int img_num;
- string win_name;
- Mat concat_img_;
- void init_window() {
- cv::namedWindow(this->win_name);
- cv::setMouseCallback(this->win_name, this->my_mouse_callback);
- }
- void init_member_param() {
- win_name = "window title";
- }
- ImgWindow() {
- }
- ImgWindow(const vector<Mat>& imgs) {
- init_member_param();
- img_num = imgs.size();
- // 連結した一枚を作る
- concat_(imgs);
- //
- init_window();
- }
- void concat_(const vector<Mat>& imgs) {
- int rows = imgs[0].rows;
- int cols = imgs[0].cols;
- concat_img_.create(Size(cols * imgs.size(), rows), imgs[0].type()/*CV_8UC3*/);
- Rect rect = Rect(0, 0, rows, cols);
- for (int i = 0; i < imgs.size(); ++i) {
- Mat roi(concat_img_, rect);
- imgs[i].copyTo(roi);
- rect.x += rows;
- }
- #ifdef _DEBUG
- imwrite("concat.png", concat_img_);
- #endif
- }
- void run()
- {
- while (true) {
- cv::imshow(win_name, concat_img_);
- if (cv::waitKey(15) == 27) {
- break;
- }
- }
- }
- // コールバック関数
- static void my_mouse_callback(int event, int x, int y, int flags, void* param) {
- //cv::Mat* image = static_cast<cv::Mat*>(param);
- switch (event) {
- case cv::EVENT_MOUSEMOVE:
- break;
- case cv::EVENT_LBUTTONDOWN:
- cout << "L button down." << endl;
- cout << "( x, y ) = (" << x << ", " << y << ")" << endl;
- break;
- case cv::EVENT_LBUTTONUP:
- break;
- }
- }
- };
- int main(int argc, char* argv[])
- {
- int rows = 256;
- int cols = 256;
- Mat3b red = Mat3b(rows, cols, Vec3b(0, 0, 255));
- Mat3b green = Mat3b(rows, cols, Vec3b(0, 255, 0));
- Mat3b blue = Mat3b(rows, cols, Vec3b(255, 0, 0));
- vector<Mat> imgs(3);
- imgs[0] = red;
- imgs[1] = green;
- imgs[2] = blue;
- ImgWindow win(imgs);
- win.run();
- return 0;
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement