Skip to content
This repository has been archived by the owner on Jan 20, 2024. It is now read-only.

Commit

Permalink
[image] add _imlib_find_barcodes.
Browse files Browse the repository at this point in the history
  • Loading branch information
junhuanchen committed Apr 24, 2022
1 parent 02b881a commit 04aa0ae
Show file tree
Hide file tree
Showing 4 changed files with 64 additions and 1 deletion.
61 changes: 61 additions & 0 deletions ext_modules/_maix_image/_maix_vision.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1051,6 +1051,67 @@ py::list maix_vision::_imlib_find_qrcodes(std::vector<int> &roi)
return return_val;
}

py::list maix_vision::_imlib_find_barcodes(std::vector<int> &roi)
{
py::list return_val;
if(NULL == this->_img)
{
py::print("no img");
return return_val;
}

image_t img = {};
img.w = this->_img->width;
img.h = this->_img->height;
img.pixels = (uint8_t*)this->_img->data;
img.pixfmt = PIXFORMAT_RGB888;

rectangle_t _roi;

_roi.x = roi[0];
_roi.y = roi[1];
_roi.w = roi[2];
_roi.h = roi[3];

//默认整个图像
if(_roi.w == 0) _roi.w = img.w;
if(_roi.h == 0) _roi.h = img.h;

list_t out;
fb_alloc_mark();
imlib_find_barcodes(&out, &img, &_roi);
fb_alloc_free_till_mark();

for (size_t i = 0; list_size(&out); i++)
{
find_barcodes_list_lnk_data_t lnk_data;
list_pop_front(&out, &lnk_data);

py::dict val;
val["x"] = lnk_data.rect.x;
val["y"] = lnk_data.rect.y;
val["w"] = lnk_data.rect.w;
val["h"] = lnk_data.rect.h;
val["payload"] = std::string(lnk_data.payload, lnk_data.payload_len);
val["rotation"] = lnk_data.rotation;
val["type"] = lnk_data.type;
val["quality"] = lnk_data.quality;

py::list corners;
for (int i = 0; i < 4; i++)
{
py::list tmp;
tmp.append(lnk_data.corners[i].x);
tmp.append(lnk_data.corners[i].y);
corners.append(tmp);
}
val["corners"] = corners;

return_val.append(val);
}

return return_val;
}

// void imlib_get_histogram(histogram_t *out, image_t *ptr, rectangle_t *roi, list_t *thresholds, bool invert, image_t *other);
maix_image::maix_histogram maix_image::_imlib_get_histogram(std::vector<int> roi_src, std::vector<std::vector<int>> &thresholds_src, bool invert, maix_image & other_src, int bins, int l_bins, int a_bins, int b_bins)
Expand Down
1 change: 1 addition & 0 deletions ext_modules/_maix_image/include/maix_image.h
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ class maix_vision : virtual public any_image
py::list _imlib_find_line_segments(std::vector<int> &roi, unsigned int merge_distance, unsigned int max_theta_diff);
py::list _imlib_find_apriltags(std::vector<int> &roi, int families, float fx, float fy, float cx, float cy);
py::list _imlib_find_qrcodes(std::vector<int> &roi);
py::list _imlib_find_barcodes(std::vector<int> &roi);
};

class maix_image : virtual public any_image, public maix_vision, public maix_custom
Expand Down
1 change: 1 addition & 0 deletions ext_modules/_maix_image/py_maix_image.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -139,5 +139,6 @@ PYBIND11_MODULE(_maix_image, mo)
.def("find_line_segments",&maix_image::_imlib_find_line_segments,py::arg("roi")=std::vector<int>{0,0,0,0},py::arg("merge_distance") = 0,py::arg("max_theta_diff") = 15)
.def("find_apriltags",&maix_image::_imlib_find_apriltags,py::arg("roi")=std::vector<int>{0,0,0,0},py::arg("families") = 16,py::arg("fx") = 0,py::arg("fy") = 0,py::arg("cx") = 0,py::arg("cy") = 0)
.def("find_qrcodes",&maix_image::_imlib_find_qrcodes,py::arg("roi")=std::vector<int>{0,0,0,0})
.def("find_barcodes",&maix_image::_imlib_find_barcodes,py::arg("roi")=std::vector<int>{0,0,0,0})
; // module end
}
2 changes: 1 addition & 1 deletion ext_modules/libmaix
Submodule libmaix updated 56 files
+1 −0 .gitignore
+30 −1 components/libmaix/include/libmaix_nn_decoder_yolo2.h
+2 −1 components/libmaix/include/mdsc.h
+ components/libmaix/lib/arch/r329/libmaix_nn_decoder.so
+4 −8 components/libmaix/lib/arch/r329/src/libmaix_nn/src/libmaix_nn.cpp
+1 −2 components/libmaix/lib/arch/r329/src/libmaix_nn_decoder/CMakeLists.txt
+12 −10 ...onents/libmaix/lib/arch/r329/src/libmaix_nn_decoder/libmaix_nn_decoder_yolo2/src/libmaix_nn_decoder_yolo2.c
+2 −1 ...onents/libmaix/lib/arch/r329/src/libmaix_nn_decoder/libmaix_nn_decoder_yolo2/src/libmaix_nn_decoder_yolo2.h
+1 −1 components/libmaix/lib/arch/r329/src/libmaix_nn_decoder/src/libmaix_nn_decoder.h
+131 −32 components/libmaix/src/mdsc/mdsc.c
+4 −4 components/third_party/include/costom_imlib_config.h
+2 −1 examples/camera/config_defaults.mk
+1 −1 examples/display/config_defaults.mk
+11 −5 examples/imlib_test/Makefile
+1 −3 examples/mpp_v83x_vivo/config_defaults.mk
+1 −1 examples/nn_mask/config_defaults.mk
+0 −12 examples/nn_mask/main/src/main.c.bak
+1 −1 examples/nn_r329_mobilenet2/config_defaults.mk
+1 −1 examples/nn_r329_shufflenet/config_defaults.mk
+1 −1 examples/nn_resnet/config_defaults.mk
+1 −1 examples/nn_retinaface/config_defaults.mk
+181 −103 examples/nn_retinaface/main/src/main.c
+0 −491 examples/nn_retinaface/main/src/main.c.bak
+6 −0 examples/nn_retinaface_mdsc/.gitignore
+40 −0 examples/nn_retinaface_mdsc/CMakeLists.txt
+8 −0 examples/nn_retinaface_mdsc/README.md
+7 −0 examples/nn_retinaface_mdsc/compile/priority.conf
+3 −0 examples/nn_retinaface_mdsc/config_defaults.mk
+38 −0 examples/nn_retinaface_mdsc/main/CMakeLists.txt
+1 −0 examples/nn_retinaface_mdsc/main/include/main.h
+18 −0 examples/nn_retinaface_mdsc/main/include/time_utils.h
+389 −0 examples/nn_retinaface_mdsc/main/src/main.c
+29 −0 examples/nn_retinaface_mdsc/project.py
+0 −0 examples/nn_retinaface_mdsc/v831_retinaface.mdsc
+1 −1 examples/nn_yolo2_card/config_defaults.mk
+3 −1 examples/nn_yolo2_card/main/src/main.c
+1 −1 examples/nn_yolo_20class/config_defaults.mk
+1 −1 examples/nn_yolo_20class/main/src/main.c
+1 −1 examples/nn_yolo_20class/main/src/main.c.bak
+1 −1 examples/nn_yolo_person/config_defaults.mk
+53 −15 examples/nn_yolo_person/main/src/main.c
+6 −0 examples/nn_yolo_traffic/.gitignore
+40 −0 examples/nn_yolo_traffic/CMakeLists.txt
+8 −0 examples/nn_yolo_traffic/README.md
+7 −0 examples/nn_yolo_traffic/compile/priority.conf
+3 −0 examples/nn_yolo_traffic/config_defaults.mk
+38 −0 examples/nn_yolo_traffic/main/CMakeLists.txt
+1 −0 examples/nn_yolo_traffic/main/include/main.h
+444 −0 examples/nn_yolo_traffic/main/src/main.c
+450 −0 examples/nn_yolo_traffic/main/src/main.c.bak
+29 −0 examples/nn_yolo_traffic/project.py
+1 −1 examples/self_learn_classifier/config_defaults.mk
+0 −1 examples/self_learn_classifier/main/src/main.c
+1 −1 examples/speech_asr/config_defaults.mk
+1 −1 examples/speech_mfcc/config_defaults.mk
+1 −1 examples/third_party_demo/config_defaults.mk

0 comments on commit 04aa0ae

Please sign in to comment.