У меня есть 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, 0x30}, // COM10: PCLK Falling edge sampling
{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
function received_bytes_to_pixels(self):
for x in self._bytes:
for i in range(8):
self._pixels.append((x >> i) & 1)
< /code>
, а затем < /p>
arr = self._pixels
# Reshape the 1D array into 2D (height = image_y, width = image_x)
img_array = np.array(arr, dtype=np.uint8).reshape((image_y, image_x))
img_array *= 255 # scale to grayscale
img = Image.fromarray(img_array, mode='L') # 'L' = (8-bit pixels, black and white)
img.show()
img.save("output.png")
Подробнее здесь: https://stackoverflow.com/questions/797 ... id-of-them
OV7670 Вертикальные полосы, что они такое и как избавиться от них? ⇐ C++
Программы на C++. Форум разработчиков
-
Anonymous
1756796673
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, 0x30}, // COM10: PCLK Falling edge sampling
{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
function received_bytes_to_pixels(self):
for x in self._bytes:
for i in range(8):
self._pixels.append((x >> i) & 1)
< /code>
, а затем < /p>
arr = self._pixels
# Reshape the 1D array into 2D (height = image_y, width = image_x)
img_array = np.array(arr, dtype=np.uint8).reshape((image_y, image_x))
img_array *= 255 # scale to grayscale
img = Image.fromarray(img_array, mode='L') # 'L' = (8-bit pixels, black and white)
img.show()
img.save("output.png")
Подробнее здесь: [url]https://stackoverflow.com/questions/79746534/ov7670-vertical-stripes-what-are-they-and-how-to-get-rid-of-them[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия