7 #ifndef IMPEM2D_OPENCV_INTERFACE_H
8 #define IMPEM2D_OPENCV_INTERFACE_H
10 #include <IMP/em2d/em2d_config.h>
13 #if IMP_EM2D_HAS_OPENCV22 || IMP_EM2D_HAS_OPENCV3
14 #include "opencv2/core/core.hpp"
15 #include "opencv2/core/version.hpp"
16 #include "opencv2/imgproc/imgproc.hpp"
17 #include "opencv2/highgui/highgui.hpp"
19 #include "opencv/cv.h"
20 #include "opencv/highgui.h"
24 #include <cereal/access.hpp>
25 #include <cereal/cereal.hpp>
27 IMPEM2D_BEGIN_NAMESPACE
29 typedef cv::Mat_<double> cvDoubleMat;
30 typedef cv::MatIterator_<double> cvDoubleMatIterator;
31 typedef cv::MatConstIterator_<double> cvDoubleConstMatIterator;
33 typedef cv::Mat_<int> cvIntMat;
34 typedef cv::MatIterator_<int> cvIntMatIterator;
36 typedef cv::Point_<int> cvPixel;
37 typedef std::vector<cvPixel> cvPixels;
40 IMPEM2DEXPORT
void show(
const cv::Mat &m, std::ostream &out = std::cout);
43 IMPEM2DEXPORT
void write_matrix(cv::Mat &m, std::string name);
47 void show(
const cv::Mat_<T> &m, std::ostream &out = std::cout) {
48 for (
int i = 0; i < m.rows; ++i) {
49 for (
int j = 0; j < m.cols; ++j) {
50 out << m(i, j) <<
" ";
60 template<
class Archive>
61 inline void serialize(Archive &ar, cv::Mat &m) {
65 if (std::is_base_of<cereal::detail::OutputArchiveBase, Archive>::value) {
69 continuous = m.isContinuous();
71 ar(rows, cols, type, continuous);
73 if (std::is_base_of<cereal::detail::InputArchiveBase, Archive>::value) {
74 m.create(rows, cols, type);
78 size_t data_size = rows * cols * m.elemSize();
79 auto mat_data = cereal::binary_data(m.data, data_size);
82 size_t row_size = cols * m.elemSize();
83 for (
int i = 0; i < rows; ++i) {
84 auto row_data = cereal::binary_data(m.ptr(i), row_size);
void write_matrix(cv::Mat &m, std::string name)
Quick and dirty way of writing a OpenCV matrix to a Spider image.
void show(Hierarchy h, std::ostream &out=std::cout)
Print out a molecular hierarchy.