IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным. В описании темы указываем язык!!!

> Перевод из одной цветовой схемы в другую, Borland C++, помогите исправить ошибку
Neon6868
сообщение 14.09.2008 12:31
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 146
Пол: Мужской

Репутация: -  0  +


Необходимо написать программу на C++ для перевода из цветовой схемы YUV в HSV. Но для этого сначала необходимо переводить в RGB, а затем в нужную цветовую схему. Я создал свой класс и объект этого класса. Затем пытаюсь присвоить полю этого объекта число. Программа компилируется (пишет что ошибок нет), но при запуске программы после нажатия кнопки перевести выдается ошибка: "Access violation at adress 00401BB1 in module Project1.exe. Write of adress 00000000" Подскажите в чем ошибка? Я не уверен что выложил нужный код, а все файлы нельзя загрузить.
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
//---------------------------------------------------------------------------
USEFORM("LAB1V1_9.cpp", Form1);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Application->Initialize();
Application->CreateForm(__classid(TForm1), &Form1);
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
catch (...)
{
try
{
throw Exception("");
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
}
return 0;
}
//---------------------------------------------------------------------------




Прикрепленные файлы
Прикрепленный файл  Project1.cpp ( 1.05 килобайт ) Кол-во скачиваний: 192
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Neon6868
сообщение 24.09.2008 16:30
Сообщение #2


Пионер
**

Группа: Пользователи
Сообщений: 146
Пол: Мужской

Репутация: -  0  +


Цитата(Lapp @ 23.09.2008 6:57) *

1. Твои формулы явно отличаются от приведенных Википедии http://ru.wikipedia.org/wiki/YUV (кстати, если говоришь про внешний источник, приводи точные ссылки, не заставляй людей искать).

2. Откуда взяты значения, которые ты называешь максимальными? Я не спец по цветоделению, как и большинство народа тут, думаю, так что ты приводи побольше инфы, если хочешь получить помощь.


Мои формулы правильные, надо было при получении значения больше, чем 255, просто записать 255. Так что с этим разобрался.

Осталось только понять, почему функция atan2 возвращает неправильные значения.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 25.09.2008 9:07
Сообщение #3


Гость






Цитата(Neon6868 @ 24.09.2008 16:30) *
Осталось только понять, почему функция atan2 возвращает неправильные значения.
atan2 возвращает неправильные значения, когда получает неправильные параметры. Я не знаю, какими тестами ты проверяешь правильность, но если хочешь - приведи значения R, G, B, при которых по-твоему происходит ошибка (не забудь также написать, что ты ожидаешь увидеть в качестве результата).

И не надо говорить, что это не работает для любых исходных данных, потому что:
  1. Мне совсем неинтересно восстанавливать твой проект. Одно дело, когда ты его присоединяешь полностью, и можно откомпилировать и посмотреть, что там творится, а другое дело - что ты выкладываешь какие-то куски, а что там у тебя лежит на форме, как это все называется, как описано в классе формы - это я должен догадаться сам?

    Вот тебе пример:
    Цитата
    Edit1->Text=FloatToStr®; // <--- Откуда взялась r ???
    Edit2->Text=FloatToStr(G);
    Edit3->Text=FloatToStr(B);
    Okno->Color=RGB(R,G,B);
    max=R;

    Процитирован твой же код, если ты не заметил. Так вот, собственно, вопрос: откуда взялся идентификатор r (это при том, что r и R для С++ - то же самое, что для тебя - "черное" и "белое", это тебе не Дельфи). Опечатка? Исправляй... Так и задумывалось? Но тогда я просто не смогу откомпилировать твою программу, поскольку не знаю, что именно задумывалось...
  2. Мне еще меньше интересно бродить по интернету, и искать фразы типа: "значение YUV = ... , тогда HSV = ...", поэтому приводи конкретные значения. Повторяю: чему перед вычислением Px и Py равняются R, G, B и какие значения H, S, V ожидаются...
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Neon6868   Перевод из одной цветовой схемы в другую   14.09.2008 12:31
volvo   А все и не надо. Ты покажи, как работаешь с классо...   14.09.2008 12:44
andriano   И еще: непонятно, зачем двухстуенчатое преобразова...   14.09.2008 14:53
Neon6868   И еще: непонятно, зачем двухстуенчатое преобразов...   15.09.2008 16:00
volvo   В том, что на момент нажатия кнопки у тебя в Y-...   15.09.2008 16:17
Neon6868   В том, что на момент нажатия кнопки у тебя в Y-...   15.09.2008 17:23
Neon6868   Написал я полностью программу, а она почему-то абс...   17.09.2008 0:26
Neon6868   Подправил программу, но несколько проблем осталось...   21.09.2008 16:33
Neon6868   Неужели никто не знает в чем причина? Если кто зна...   22.09.2008 15:54
Lapp   1. Твои формулы явно отличаются от приведенных Вик...   23.09.2008 5:57
Neon6868   1. Твои формулы явно отличаются от приведенных Ви...   24.09.2008 16:30
volvo   Осталось только понять, почему функция atan2 возвр...   25.09.2008 9:07
Lapp   Трудно и неинтересно разговаривать с человеком, ко...   25.09.2008 6:53
Neon6868   Lapp До того как я написал что формулы верны, я не...   27.09.2008 18:04
volvo   Вообще-то прототип функции atan2 - вот такой: floa...   27.09.2008 19:27
Neon6868   Volvo, большое спасибо. На самом деле надо было пр...   29.09.2008 17:53
Lapp   Я бы назвал это примечанием.Твои "формулы...   30.09.2008 4:01


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 19.06.2025 15:48
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"