我想更改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的文档。
答案 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);