OV7670 Вертикальные полосы, что они такое и как избавиться от них?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 OV7670 Вертикальные полосы, что они такое и как избавиться от них?

Сообщение Anonymous »

У меня есть OV7670, и я настраиваю его для чтения Arucomarker в чистом черном / белом. A 1 указывает белый, a 0 указывает на черный. Я хотел бы избавиться от этих вертикальных линий, чтобы получить красивое и чистое изображение.

Это мои регистральные значения, которые я использую, чтобы инициировать камеру:
Это мои регистральные значения, которые я использую, чтобы инициировать камеру: p> p> p> p>
Это мои регистральные значения, которые я использую, чтобы инициировать камеру:
Это мои регистральные значения:
Это мои регистральные значения:
Это реестр.static const struct {
uint8_t reg;
uint8_t val;
} ov7670_init_register_values[] = {
{0x11, 0x06}, // CLKRC (prescaler)
{0x12, 0x00}, // COM7: Select YUV
{0x15, 0x20}, // COM10: per your request (PCLK polarity rising)
{0x8C, 0x00}, // RGB444 disable
{0x40, 0x00}, // COM15: Full range output, YUV422
{0x3A, 0x04}, // TSLB: YUYV order
{0x32, 0x80}, // HREF control
{0x17, 0x16}, // HSTART
{0x18, 0x04}, // HSTOP
{0x19, 0x02}, // VSTART
{0x1A, 0x7A}, // VSTOP
{0x03, 0x0A}, // VREF
{0x0C, 0x00}, // COM3: No scaling, no DCW
{0x3E, 0x00}, // COM14: No scaling, normal PCLK
{0x42, 0x00}, // COM17 = 0x00 (disable test pattern)
{0x73, 0xF0}, // Scaling PCLK divider
{0x4F, 0x80}, // Matrix cf 1
{0x50, 0x80}, // Matrix cf 2
{0x51, 0x00}, // Matrix cf 3
{0x52, 0x22}, // Matrix cf 4
{0x53, 0x5E}, // Matrix cf 5
{0x54, 0x80}, // Matrix cf 6
{0x55, 0x00}, // BRIGHTNESS (default 0x00)
{0x56, 0x40}, // Contrast (default 0x40)

{0xFF, 0xFF}, // END marker
};
< /code>
Во -первых, я передаю сброс (0x12, 0x80) с задержкой 10 мс после. < /p>
Метод выборки моего изображения: < /p>
void capture_image(uint8_t *p_bytes, int *p_byte_counter) {
*p_bytes = 0;
uint8_t bit_counter = 0;
bool odd = true;
uint8_t byte = 0;

unsigned int key = irq_lock(); // Disable interrupts for timing critical section

wait_for_vsync(); // wait until vsync pin is pulled down
while(!get_value(VSYNC_PIN)) {
wait_for_low(PCLK_PIN, true); // wait until PCLK is pulled down or vsync is pulled up
if(get_value(VSYNC_PIN)) break; // cancel if vsync is high

// Read pixel value (1 or 0)
uint8_t pixel = !!(NRF_P0->IN & PIXEL_PIN_7_MASK);

// Branchless odd pixel selection
// pixel contributes only if odd == true (take only Y bytes)
if(odd) {
byte = (byte

Подробнее здесь: https://stackoverflow.com/questions/797 ... id-of-them
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • OV7670 Вертикальные полосы, что они такое и как избавиться от них?
    Anonymous » » в форуме C++
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • OV7670 Вертикальные полосы, что они такое и как избавиться от них?
    Anonymous » » в форуме C++
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • OV7670 Вертикальные полосы, что они такое и как избавиться от них?
    Anonymous » » в форуме C++
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • OV7670 Вертикальные полосы, что они такое и как избавиться от них?
    Anonymous » » в форуме C++
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • OV7670 Вертикальные полосы, что они такое и как избавиться от них?
    Anonymous » » в форуме C++
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»