将检测到的文本设置为比图像更暗 - ccv

时间:2015-12-29 15:13:26

标签: c++ c struct computer-vision

我想更改ccv swt默认参数以更改alghoritm参数。一些算法提供的搜索文本的屏幕亮度比文本更亮更暗。我想在ccv swt中设置此选项,使文本比屏幕更暗。

为了做到这一点,我想稍微使用 ccv_swt_param_t 结构。

这是ccv.h中的这个结构:

    /* swt related method: stroke width transform is relatively new, typically used in text detection */
 typedef struct {
     int interval; // for scale invariant option
     int min_neighbors; // minimal neighbors to make a detection valid, this is for scale-invariant version
     int scale_invariant; // enable scale invariant swt (to scale to different sizes and then combine the results)
     int direction;
     double same_word_thresh[2]; // overlapping more than 0.1 of the bigger one (0), and 0.9 of the smaller one (1)
     /* canny parameters */
     int size;
     int low_thresh;
    int high_thresh;
     /* geometry filtering parameters */
     int max_height;
     int min_height;
     int min_area;
     int letter_occlude_thresh;
     double aspect_ratio;
     double std_ratio;
     /* grouping parameters */
     double thickness_ratio;
     double height_ratio;
     int intensity_thresh;
     double distance_ratio;
     double intersect_ratio;
    double elongate_ratio;
    int letter_thresh;
     /* break textline into words */
     int breakdown;
     double breakdown_ratio;
 } ccv_swt_param_t;

 extern const ccv_swt_param_t ccv_swt_default_params;

在swtdetect.c中我正在更改源代码以放置我的新结构。我能够复制struct并将其传递给有趣的函数,但我从swtdetect

获取消息
swtdetect: ccv_basic.c:196: ccv_sobel: Assertion `fsz % 2 == 1' failed.

以下是我改变swtdetect.c的方法: 那是:

(...)
        ccv_array_t* words = ccv_swt_detect_words(image, ccv_swt_default_params);

我玩了一点并改变了:

    ccv_swt_param_t *ptr = malloc( sizeof( &ccv_swt_default_params ) );
//ptr->max_height = 600;
(...)
    ccv_array_t* words = ccv_swt_detect_words(image, *ptr);

我想要的只是使用最佳检测。我想将文本的参数设置为整​​个图像更暗。

在这里,我复制某种方式,它应该是错误的,因为即使不改变任何参数,断言也会失败。

Here是swt的文档。

1 个答案:

答案 0 :(得分:1)

行。 我为默认的const结构分配了内存,但错过了分配它。

 ccv_swt_param_t *ptr = malloc( sizeof( &ccv_swt_default_params ) );
 ***ptr = ccv_swt_default_params;**
(...)
    ccv_array_t* words = ccv_swt_detect_words(image, *ptr);