7 #ifndef IMPEM2D_OPENCV_INTERFACE_H
8 #define IMPEM2D_OPENCV_INTERFACE_H
10 #include <IMP/em2d/em2d_config.h>
13 #include "opencv2/core/core.hpp"
14 #include "opencv2/core/version.hpp"
15 #include "opencv2/imgproc/imgproc.hpp"
16 #include "opencv2/highgui/highgui.hpp"
19 #include <cereal/access.hpp>
20 #include <cereal/cereal.hpp>
22 IMPEM2D_BEGIN_NAMESPACE
24 typedef cv::Mat_<double> cvDoubleMat;
25 typedef cv::MatIterator_<double> cvDoubleMatIterator;
26 typedef cv::MatConstIterator_<double> cvDoubleConstMatIterator;
28 typedef cv::Mat_<int> cvIntMat;
29 typedef cv::MatIterator_<int> cvIntMatIterator;
31 typedef cv::Point_<int> cvPixel;
32 typedef std::vector<cvPixel> cvPixels;
35 IMPEM2DEXPORT
void show(
const cv::Mat &m, std::ostream &out = std::cout);
38 IMPEM2DEXPORT
void write_matrix(cv::Mat &m, std::string name);
42 void show(
const cv::Mat_<T> &m, std::ostream &out = std::cout) {
43 for (
int i = 0; i < m.rows; ++i) {
44 for (
int j = 0; j < m.cols; ++j) {
45 out << m(i, j) <<
" ";
55 template<
class Archive>
56 inline void serialize(Archive &ar, cv::Mat &m) {
60 if (std::is_base_of<cereal::detail::OutputArchiveBase, Archive>::value) {
64 continuous = m.isContinuous();
66 ar(rows, cols, type, continuous);
68 if (std::is_base_of<cereal::detail::InputArchiveBase, Archive>::value) {
69 m.create(rows, cols, type);
73 size_t data_size = rows * cols * m.elemSize();
74 auto mat_data = cereal::binary_data(m.data, data_size);
77 size_t row_size = cols * m.elemSize();
78 for (
int i = 0; i < rows; ++i) {
79 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.