andrewssobral / andrewssobral/bgslibrary
Logic error in vibe
- Dominant language
- C++
- Stars
- 2.3k
- Forks
- 735
- PR merge metrics
- No merged PRs in 30d
Description
**Describe the bug**
When we init the `historybuffer[]`, the elements in it are like **BBBBBBBBBBBBBBBBBBGGG…RRR…**(suppose that the image imported by cv is a RGB image not a BGR). But when we use `historybuffer[]`, we see it as **RGBRGBRGB……** which confuses me much.
**To Reproduce**
Just see the code : ), I will offer it.
when we init it
```
for (int index = (3 * width) * height - 1; index >= 0; --index) {
uint8_t value = image_data[index];
for (int x = 0; x < model->numberOfSamples - NUMBER_OF_HISTORY_IMAGES; ++x) {
int value_plus_noise = value + rand() % 20 - 10;
if (value_plus_noise < 0) { value_plus_noise = 0; }
if (value_plus_noise > 255) { value_plus_noise = 255; }
model->historyBuffer[index * (model->numberOfSamples - NUMBER_OF_HISTORY_IMAGES) + x] = value_plus_noise;
}
}
```
when we use it
```
for (int i = numberOfTests; i > 0; --i, indexHistoryBuffer += 3) {
if (
distance_is_close_8u_C3R(
image_data[(3 * index)], image_data[(3 * index) + 1], image_data[(3 * index) + 2],
historyBuffer[indexHistoryBuffer], historyBuffer[indexHistoryBuffer + 1], historyBuffer[indexHistoryBuffer + 2],
matchingThreshold
)
)
--segmentation_map[index];
```
**Expected behavior**
Consistency should be maintained in logic.
Init it just like this(may have some errors)
```
auto plus_noise = [](uint8_t value) -> int {int value_plus_noise = value + rand() % 20 - 10;
if (value_plus_noise < 0) { value_plus_noise = 0; }
if (value_plus_noise > 255) { value_plus_noise = 255; }
return value_plus_noise;};
for (int index = (3 * width) * height - 1; index >= 0; index -= 3) {
uint8_t value_1 = image_data[index];
uint8_t value_2 = image_data[index - 1];
uint8_t value_3 = image_data[index - 2];
for (int x = 0; x < model->numberOfSamples - NUMBER_OF_HISTORY_IMAGES; ++x) {
int value_plus_noise1 = plus_noise(value_1);
int value_plus_noise2 = plus_noise(value_2);
int value_plus_noise3 = plus_noise(value_3);
model->historyBuffer[(index - 2) * (model->numberOfSamples - NUMBER_OF_HISTORY_IMAGES) + x * 3 + 2] = value_plus_noise1;
model->historyBuffer[(index - 2) * (model->numberOfSamples - NUMBER_OF_HISTORY_IMAGES) + x * 3 + 1] = value_plus_noise2;
model->historyBuffer[(index - 2) * (model->numberOfSamples - NUMBER_OF_HISTORY_IMAGES) + x * 3] = value_plus_noise3;
}
}
```
**Additional context**
However, it nearly doesn't cause any mistake when we just see the result, which confuses me more.
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.