Advertisement
Guest User

Untitled

a guest
Aug 16th, 2017
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.84 KB | None | 0 0
  1. #include "opencv2\opencv.hpp"
  2. #include <vector>
  3. #include <cmath>
  4. #include <iostream>
  5.  
  6. using namespace cv;
  7. using namespace std;
  8.  
  9.  
  10. class ImgWindow {
  11.  
  12. public:
  13.  
  14. int img_num;
  15. string win_name;
  16.  
  17. Mat concat_img_;
  18.  
  19. void init_window() {
  20. cv::namedWindow(this->win_name);
  21. cv::setMouseCallback(this->win_name, this->my_mouse_callback);
  22. }
  23.  
  24. void init_member_param() {
  25. win_name = "window title";
  26. }
  27.  
  28. ImgWindow() {
  29.  
  30. }
  31.  
  32. ImgWindow(const vector<Mat>& imgs) {
  33.  
  34. init_member_param();
  35.  
  36. img_num = imgs.size();
  37.  
  38. // 連結した一枚を作る
  39. concat_(imgs);
  40.  
  41. //
  42. init_window();
  43.  
  44.  
  45. }
  46.  
  47. void concat_(const vector<Mat>& imgs) {
  48. int rows = imgs[0].rows;
  49. int cols = imgs[0].cols;
  50. concat_img_.create(Size(cols * imgs.size(), rows), imgs[0].type()/*CV_8UC3*/);
  51.  
  52. Rect rect = Rect(0, 0, rows, cols);
  53.  
  54. for (int i = 0; i < imgs.size(); ++i) {
  55. Mat roi(concat_img_, rect);
  56. imgs[i].copyTo(roi);
  57. rect.x += rows;
  58. }
  59.  
  60. #ifdef _DEBUG
  61. imwrite("concat.png", concat_img_);
  62. #endif
  63.  
  64. }
  65.  
  66. void run()
  67. {
  68. while (true) {
  69. cv::imshow(win_name, concat_img_);
  70. if (cv::waitKey(15) == 27) {
  71. break;
  72. }
  73. }
  74. }
  75.  
  76.  
  77. // コールバック関数
  78. static void my_mouse_callback(int event, int x, int y, int flags, void* param) {
  79. //cv::Mat* image = static_cast<cv::Mat*>(param);
  80.  
  81. switch (event) {
  82. case cv::EVENT_MOUSEMOVE:
  83.  
  84. break;
  85.  
  86.  
  87. case cv::EVENT_LBUTTONDOWN:
  88. cout << "L button down." << endl;
  89. cout << "( x, y ) = (" << x << ", " << y << ")" << endl;
  90. break;
  91.  
  92. case cv::EVENT_LBUTTONUP:
  93.  
  94. break;
  95. }
  96. }
  97. };
  98.  
  99.  
  100. int main(int argc, char* argv[])
  101. {
  102. int rows = 256;
  103. int cols = 256;
  104.  
  105. Mat3b red = Mat3b(rows, cols, Vec3b(0, 0, 255));
  106. Mat3b green = Mat3b(rows, cols, Vec3b(0, 255, 0));
  107. Mat3b blue = Mat3b(rows, cols, Vec3b(255, 0, 0));
  108.  
  109. vector<Mat> imgs(3);
  110. imgs[0] = red;
  111. imgs[1] = green;
  112. imgs[2] = blue;
  113.  
  114. ImgWindow win(imgs);
  115.  
  116. win.run();
  117.  
  118. return 0;
  119. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement