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

Posted

技术标签:

【中文标题】将检测到的文本设置为比图像更暗 - ccv【英文标题】:Set detected text darker than image - ccv 【发布时间】:2015-12-29 15:13:25 【问题描述】:

我想更改 ccv swt 默认参数以更改算法参数。一些算法提供了屏幕亮度比文本更亮和更暗的搜索文本。我想在 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);

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

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

Here 是 swt 的文档。

【问题讨论】:

这是一个非常专业的问题。您应该添加更多相关标签。 【参考方案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);

【讨论】:

以上是关于将检测到的文本设置为比图像更暗 - ccv的主要内容,如果未能解决你的问题,请参考以下文章

缩小以适应 div 和段落,基于图像?

如果设置为 true,AcceptsReturn 会禁用多行文本框中的 Key.Return 检测吗?

使用序列请求的数组设置数组元素在 1 维后具有不均匀的形状检测到的形状为 (2,)+ 不均匀部分

如何检测文本字段中是不是包含文本而不是数值?

将输入占位符颜色更改为更暗

DbContext AutoDetectChangesEnabled 设置为 false 检测更改