Вверх ↑
Этот топик читают: Гость
Ответов: 118
Рейтинг: 0
#1: 2017-02-05 13:36:29 ЛС | профиль | цитата
Собственно вопрос есть ли возможность работы с RGB каналами картинки
карма: 0

0
vip
#1.1контекстная реклама от партнеров
Ответов: 8887
Рейтинг: 823
#2: 2017-02-05 15:00:12 ЛС | профиль | цитата
Spectr20,
Схемка


Add(Image,1944412,287,140)
{
Left=80
Top=10
Width=300
Height=225
Point(ImageWidth)
Point(ImageHeight)
Point(doRefresh)
}
Add(Button,6963547,133,140)
{
Left=10
Top=30
Caption="Open"
link(onClick,10557963:doExecute,[])
}
Add(ODialog,10557963,182,140)
{
link(onExecute,15710971:doLoad,[])
}
Add(PictureStream,15710971,231,140)
{
link(onLoad,1944412:doLoad,[])
}
Add(Button,9503347,133,238)
{
Left=10
Top=80
Caption="R <--> B"
link(onClick,8171276:doFor,[])
}
Add(For,8171276,175,238)
{
IncludeEnd=1
link(onEvent,14226786:doFor,[])
link(onStop,1944412:doRefresh,[(221,251)(221,160)])
link(End,1944412:ImageWidth,[(188,180)(300,180)])
}
Add(For,14226786,231,238)
{
IncludeEnd=1
link(onEvent,4220450:doGetPixel,[])
link(End,1944412:ImageHeight,[(244,187)(307,187)])
}
Add(Img_GetPoint,4220450,287,238)
{
link(onGetPixel,11657031:doGetRGB,[])
link(Bitmap,11986615:Var2,[])
link(X,9966962:Var2,[])
}
Add(ToRGB,11657031,336,238)
{
link(onResult,7423988:doRGB,[])
}
Add(RGB,7423988,399,238)
{
link(onRGB,1858076:doDraw,[])
link(R,11657031:B,[(405,229)(377,229)(377,278)(356,278)])
link(G,11657031:G,[(412,222)(384,222)(384,285)(349,285)])
link(B,11657031:R,[(419,215)(392,215)(392,292)(342,292)])
}
Add(Img_Point,1858076,448,238)
{
Point(X)
Point(Y)
link(Bitmap,11986615:Var3,[(454,194)])
link(X,9966962:Var3,[(461,208)])
link(Y,14226786:Position,[(468,201)(271,201)(271,281)(237,281)])
}
Add(GetDataEx,11986615,287,189)
{
link(Data,1944412:ImageBitmap,[])
}
Add(GetDataEx,9966962,294,203)
{
Angle=3
link(Data,8171276:Position,[(279,208)(279,290)(181,290)])
}

карма: 19

0
Ответов: 118
Рейтинг: 0
#3: 2017-02-15 14:15:05 ЛС | профиль | цитата
Мне нужно разложение на RGB составляющие и как следствие сохранение их в отдельные файлы
карма: 0

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#4: 2017-02-15 15:25:24 ЛС | профиль | цитата
Spectr20 писал(а):
Мне нужно разложение на RGB составляющие и как следствие сохранение их в отдельные файлы

Как первое приближение (за основу взята схема от Леонида), без всякой оптимизации

Схема

Add(MainForm,2953706,70,140)
{
Width=592
Height=604
}
Add(Image,1944412,329,70)
{
Left=80
Top=10
Width=240
Height=180
Point(ImageWidth)
Point(ImageHeight)
Point(doRefresh)
}
Add(Button,6963547,70,70)
{
Left=10
Top=30
TabOrder=-1
Caption="Open"
link(onClick,10557963:doExecute,[])
}
Add(ODialog,10557963,119,70)
{
link(onExecute,12570873:doValue,[])
}
Add(Button,9503347,70,189)
{
Left=10
Top=55
TabOrder=-1
Caption="To RGB"
link(onClick,5502119:doEvent1,[])
}
Add(For,8171276,161,196)
{
IncludeEnd=1
link(onEvent,14226786:doFor,[])
link(onStop,3846218:doEvent1,[])
link(End,11996557:Var1,[(174,138)])
}
Add(For,14226786,273,196)
{
IncludeEnd=1
link(onEvent,4220450:doGetPixel,[])
link(End,14709165:Var1,[(286,145)])
}
Add(Img_GetPoint,4220450,329,196)
{
link(onGetPixel,11657031:doGetRGB,[])
link(Bitmap,1944412:ImageBitmap,[])
link(X,9966962:Var2,[])
}
Add(ToRGB,11657031,399,196)
{
link(onResult,5837852:doOperation,[])
}
Add(Img_Point,1858076,574,196)
{
Point(X)
Point(Y)
Point(Color)
link(onDraw,1506440:doDraw,[])
link(Bitmap,7984993:Var2,[])
link(X,1566465:Var2,[])
link(Y,9819460:Var2,[])
link(Color,11657031:R,[(601,187)(615,187)(615,236)(405,236)])
}
Add(GetDataEx,9966962,336,161)
{
Angle=3
link(Data,8171276:Position,[(321,166)(321,248)(167,248)])
}
Add(Bitmap,15622590,574,42)
{
Point(HWidth)
Point(HHeight)
Point(doCreate)
Point(onCreate)
link(HWidth,1560467:Var2,[])
link(HHeight,124144:Var2,[])
link(onCreate,6681050:doCreate,[(634,48)(634,62)])
}
Add(Bitmap,6681050,637,42)
{
Point(HWidth)
Point(HHeight)
Point(doCreate)
Point(onCreate)
link(HWidth,12394868:Var2,[])
link(HHeight,9969652:Var2,[])
link(onCreate,15949501:doCreate,[(690,48)(690,62)])
}
Add(Bitmap,15949501,700,42)
{
Point(HWidth)
Point(HHeight)
Point(doCreate)
link(HWidth,12394868:Var3,[(706,19)])
link(HHeight,9969652:Var3,[(713,12)])
}
Add(GetDataEx,11996557,336,133)
{
link(Data,1944412:ImageWidth,[])
}
Add(GetDataEx,1560467,574,14)
{
Angle=3
link(Data,11996557:Var3,[(566,19)(566,138)])
}
Add(GetDataEx,12394868,637,14)
{
Angle=3
link(Data,1560467:Var3,[])
}
Add(GetDataEx,14709165,343,140)
{
link(Data,1944412:ImageHeight,[])
}
Add(GetDataEx,124144,581,7)
{
Angle=3
link(Data,14709165:Var3,[(559,12)(559,145)])
}
Add(GetDataEx,9969652,644,7)
{
Angle=3
link(Data,124144:Var3,[])
}
Add(Img_Point,1506440,637,196)
{
Point(X)
Point(Y)
Point(Color)
link(onDraw,14929414:doDraw,[])
link(Bitmap,15900645:Var2,[])
link(X,4395282:Var2,[])
link(Y,12416164:Var2,[])
link(Color,5837852:Result,[(664,187)(678,187)(678,243)(461,243)])
}
Add(GetDataEx,1566465,581,161)
{
Angle=3
link(Data,9966962:Var3,[])
}
Add(GetDataEx,9819460,588,154)
{
Angle=3
link(Data,14226786:Position,[(313,159)(313,239)(279,239)])
}
Add(Img_Point,14929414,700,196)
{
Point(X)
Point(Y)
Point(Color)
link(Bitmap,11943658:Var2,[])
link(X,4395282:Var3,[(713,166)])
link(Y,12416164:Var3,[(720,159)])
link(Color,10833315:Result,[(727,187)(741,187)(741,250)(517,250)])
}
Add(GetDataEx,4395282,644,161)
{
Angle=3
link(Data,1566465:Var3,[])
}
Add(GetDataEx,12416164,651,154)
{
Angle=3
link(Data,9819460:Var3,[])
}
Add(Image,5446692,616,294)
{
Left=330
Top=10
Width=240
Height=180
Point(ImageWidth)
Point(ImageHeight)
Point(doRefresh)
link(Bitmap,10033991:Var2,[])
}
Add(Image,14864667,679,329)
{
Left=330
Top=195
Width=240
Height=180
Point(ImageWidth)
Point(ImageHeight)
Point(doRefresh)
link(Bitmap,13847155:Var2,[])
}
Add(Image,10643726,742,364)
{
Left=330
Top=380
Width=240
Height=180
Point(ImageWidth)
Point(ImageHeight)
Point(doRefresh)
link(Bitmap,4907812:Var2,[])
}
Add(GetDataEx,7984993,574,133)
{
link(Data,15622590:Bitmap,[])
}
Add(GetDataEx,15900645,637,133)
{
link(Data,6681050:Bitmap,[])
}
Add(GetDataEx,11943658,700,133)
{
link(Data,15949501:Bitmap,[])
}
Add(Hub,3846218,210,203)
{
OutCount=4
link(onEvent1,1944412:doRefresh,[(263,209)(263,90)])
link(onEvent2,5446692:doLoad,[(253,216)(253,300)])
link(onEvent3,14864667:doLoad,[(242,223)(242,335)])
link(onEvent4,10643726:doLoad,[(235,230)(235,370)])
}
Add(Hub,5502119,119,189)
{
link(onEvent1,15622590:doCreate,[(144,195)(144,181)(60,181)(60,62)])
link(onEvent2,8171276:doFor,[])
}
Add(Math,5837852,455,196)
{
OpType=9
Op2=8
ResultType=0
link(onResult,10833315:doOperation,[])
link(Op1,11657031:G,[(461,187)(391,187)(391,243)(412,243)])
}
Add(Math,10833315,511,196)
{
OpType=9
Op2=16
ResultType=0
link(onResult,1858076:doDraw,[])
link(Op1,11657031:B,[(517,180)(384,180)(384,250)(419,250)])
}
Add(Img_Loader,9693316,217,70)
{
link(onLoad,1944412:doLoad,[])
}
Add(Button,15298903,71,399)
{
Left=10
Top=80
TabOrder=-1
Caption="Save"
link(onClick,7684278:doBrowse,[])
}
Add(Memory,12570873,168,70)
{
link(onData,9693316:doLoad,[])
}
Add(Browse,7684278,126,399)
{
Title="Выберите папку сохранения"
NewStyle=0
link(onBrowse,11509667:doValue,[])
}
Add(Memory,11509667,182,399)
{
link(onData,4083365:doPart,[])
}
Add(FilePartElm,4083365,238,399)
{
Mode=2
link(onPart,15561340:doEvent1,[])
link(FileName,12570873:Value,[(244,390)(153,390)(153,131)(174,131)])
}
Add(StrCatDelim,16540675,336,399)
{
Str2="_R.bmp"
link(onStrCatDlm,13761447:doSave,[])
link(Str1,310918:Var1,[(342,390)(391,390)])
}
Add(Hub,15561340,287,399)
{
OutCount=3
link(onEvent1,16540675:doStrCatDlm,[])
link(onEvent2,4750604:doStrCatDlm,[(320,412)(320,475)])
link(onEvent3,16610091:doStrCatDlm,[(312,419)(312,531)])
}
Add(StrCatDelim,4750604,336,469)
{
Str2="_G.bmp"
link(onStrCatDlm,16229886:doSave,[])
link(Str1,6491246:Var2,[])
}
Add(StrCatDelim,16610091,385,525)
{
Str2="_B.bmp"
link(onStrCatDlm,7977776:doSave,[])
link(Str1,310918:Var2,[])
}
Add(PictureStream,13761447,406,392)
{
link(Bitmap,10033991:Var1,[(419,257)])
}
Add(GetDataEx,10033991,616,252)
{
link(Data,7984993:Var3,[(622,138)])
}
Add(PictureStream,16229886,434,462)
{
link(Bitmap,13847155:Var1,[(447,264)])
}
Add(GetDataEx,13847155,679,259)
{
link(Data,15900645:Var3,[(685,138)])
}
Add(PictureStream,7977776,469,518)
{
link(Bitmap,4907812:Var1,[(482,376)(720,376)(720,278)])
}
Add(GetDataEx,4907812,742,273)
{
link(Data,11943658:Var3,[(748,138)])
}
Add(GetDataEx,6491246,336,441)
{
Angle=3
link(Data,11509667:Value,[(188,446)])
}
Add(GetDataEx,310918,385,441)
{
Angle=3
link(Data,6491246:Var3,[])
}


Редактировалось 1 раз(а), последний 2017-02-15 15:25:56
карма: 22

0
Ответов: 118
Рейтинг: 0
#5: 2017-02-15 21:40:47 ЛС | профиль | цитата
Ок а как сделать чтоб отображение было как в фотошопе

карма: 0

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#6: 2017-02-15 23:37:45 ЛС | профиль | цитата
Spectr20 писал(а):
Ок а как сделать чтоб отображение было как в фотошопе

Непонятно, что имелось в виду под "было как в фотошопе", черно-белое, что ли, согласно скриншота? Так пропусти через фильтр GrayScale
карма: 22

0
Ответов: 8887
Рейтинг: 823
#7: 2017-02-15 23:41:22 ЛС | профиль | цитата
или так


Add(MainForm,14060933,252,196)
{
Width=592
Height=604
}
Add(Image,1944412,511,126)
{
Left=80
Top=10
Width=240
Height=180
Point(ImageWidth)
Point(ImageHeight)
Point(doRefresh)
}
Add(Button,6963547,252,126)
{
Left=10
Top=30
TabOrder=-1
Caption="Open"
link(onClick,10557963:doExecute,[])
}
Add(ODialog,10557963,301,126)
{
link(onExecute,12570873:doValue,[])
}
Add(Button,9503347,252,245)
{
Left=10
Top=55
TabOrder=-1
Caption="To RGB"
link(onClick,5502119:doEvent1,[])
}
Add(For,8171276,343,252)
{
IncludeEnd=1
link(onEvent,14226786:doFor,[])
link(onStop,3846218:doEvent1,[])
link(End,11996557:Var1,[(356,194)])
}
Add(For,14226786,455,252)
{
IncludeEnd=1
link(onEvent,4220450:doGetPixel,[])
link(End,14709165:Var1,[(468,201)])
}
Add(Img_GetPoint,4220450,511,252)
{
link(onGetPixel,11657031:doGetRGB,[])
link(Bitmap,1944412:ImageBitmap,[])
link(X,9966962:Var2,[])
}
Add(ToRGB,11657031,553,252)
{
link(onResult,14052509:doRGB,[])
}
Add(Img_Point,1858076,756,252)
{
Point(X)
Point(Y)
Point(Color)
link(onDraw,1506440:doDraw,[])
link(Bitmap,7984993:Var2,[])
link(X,1566465:Var2,[])
link(Y,9819460:Var2,[])
link(Color,14052509:Color,[(783,243)(797,243)(797,306)(629,306)])
}
Add(GetDataEx,9966962,518,217)
{
Angle=3
link(Data,8171276:Position,[(503,222)(503,304)(349,304)])
}
Add(Bitmap,15622590,756,98)
{
Point(HWidth)
Point(HHeight)
Point(doCreate)
Point(onCreate)
link(HWidth,1560467:Var2,[])
link(HHeight,124144:Var2,[])
link(onCreate,6681050:doCreate,[(816,104)(816,118)])
}
Add(Bitmap,6681050,819,98)
{
Point(HWidth)
Point(HHeight)
Point(doCreate)
Point(onCreate)
link(HWidth,12394868:Var2,[])
link(HHeight,9969652:Var2,[])
link(onCreate,15949501:doCreate,[(872,104)(872,118)])
}
Add(Bitmap,15949501,882,98)
{
Point(HWidth)
Point(HHeight)
Point(doCreate)
link(HWidth,12394868:Var3,[(888,75)])
link(HHeight,9969652:Var3,[(895,68)])
}
Add(GetDataEx,11996557,518,189)
{
link(Data,1944412:ImageWidth,[])
}
Add(GetDataEx,1560467,756,70)
{
Angle=3
link(Data,11996557:Var3,[(748,75)(748,194)])
}
Add(GetDataEx,12394868,819,70)
{
Angle=3
link(Data,1560467:Var3,[])
}
Add(GetDataEx,14709165,525,196)
{
link(Data,1944412:ImageHeight,[])
}
Add(GetDataEx,124144,763,63)
{
Angle=3
link(Data,14709165:Var3,[(741,68)(741,201)])
}
Add(GetDataEx,9969652,826,63)
{
Angle=3
link(Data,124144:Var3,[])
}
Add(Img_Point,1506440,819,252)
{
Point(X)
Point(Y)
Point(Color)
link(onDraw,14929414:doDraw,[])
link(Bitmap,15900645:Var2,[])
link(X,4395282:Var2,[])
link(Y,12416164:Var2,[])
link(Color,13276332:Color,[(846,243)(860,243)(860,299)(671,299)])
}
Add(GetDataEx,1566465,763,217)
{
Angle=3
link(Data,9966962:Var3,[])
}
Add(GetDataEx,9819460,770,210)
{
Angle=3
link(Data,14226786:Position,[(495,215)(495,295)(461,295)])
}
Add(Img_Point,14929414,882,252)
{
Point(X)
Point(Y)
Point(Color)
link(Bitmap,11943658:Var2,[])
link(X,4395282:Var3,[(895,222)])
link(Y,12416164:Var3,[(902,215)])
link(Color,7580633:Color,[(909,243)(923,243)(923,292)(713,292)])
}
Add(GetDataEx,4395282,826,217)
{
Angle=3
link(Data,1566465:Var3,[])
}
Add(GetDataEx,12416164,833,210)
{
Angle=3
link(Data,9819460:Var3,[])
}
Add(Image,5446692,798,350)
{
Left=330
Top=10
Width=240
Height=180
Point(ImageWidth)
Point(ImageHeight)
Point(doRefresh)
link(Bitmap,10033991:Var2,[])
}
Add(Image,14864667,861,385)
{
Left=330
Top=195
Width=240
Height=180
Point(ImageWidth)
Point(ImageHeight)
Point(doRefresh)
link(Bitmap,13847155:Var2,[])
}
Add(Image,10643726,924,420)
{
Left=330
Top=380
Width=240
Height=180
Point(ImageWidth)
Point(ImageHeight)
Point(doRefresh)
link(Bitmap,4907812:Var2,[])
}
Add(GetDataEx,7984993,756,189)
{
link(Data,15622590:Bitmap,[])
}
Add(GetDataEx,15900645,819,189)
{
link(Data,6681050:Bitmap,[])
}
Add(GetDataEx,11943658,882,189)
{
link(Data,15949501:Bitmap,[])
}
Add(Hub,3846218,392,259)
{
OutCount=4
link(onEvent1,1944412:doRefresh,[(445,265)(445,146)])
link(onEvent2,5446692:doLoad,[(435,272)(435,356)])
link(onEvent3,14864667:doLoad,[(424,279)(424,391)])
link(onEvent4,10643726:doLoad,[(417,286)(417,426)])
}
Add(Hub,5502119,301,245)
{
link(onEvent1,15622590:doCreate,[(326,251)(326,237)(242,237)(242,118)])
link(onEvent2,8171276:doFor,[])
}
Add(Img_Loader,9693316,399,126)
{
link(onLoad,1944412:doLoad,[])
}
Add(Button,15298903,253,455)
{
Left=10
Top=80
TabOrder=-1
Caption="Save"
link(onClick,7684278:doBrowse,[])
}
Add(Memory,12570873,350,126)
{
link(onData,9693316:doLoad,[])
}
Add(Browse,7684278,308,455)
{
Title="Выберите папку сохранения"
NewStyle=0
link(onBrowse,11509667:doValue,[])
}
Add(Memory,11509667,364,455)
{
link(onData,4083365:doPart,[])
}
Add(FilePartElm,4083365,420,455)
{
Mode=2
link(onPart,15561340:doEvent1,[])
link(FileName,12570873:Value,[(426,446)(335,446)(335,187)(356,187)])
}
Add(StrCatDelim,16540675,518,455)
{
Str2="_R.bmp"
link(onStrCatDlm,13761447:doSave,[])
link(Str1,310918:Var1,[(524,446)(573,446)])
}
Add(Hub,15561340,469,455)
{
OutCount=3
link(onEvent1,16540675:doStrCatDlm,[])
link(onEvent2,4750604:doStrCatDlm,[(502,468)(502,531)])
link(onEvent3,16610091:doStrCatDlm,[(494,475)(494,587)])
}
Add(StrCatDelim,4750604,518,525)
{
Str2="_G.bmp"
link(onStrCatDlm,16229886:doSave,[])
link(Str1,6491246:Var2,[])
}
Add(StrCatDelim,16610091,567,581)
{
Str2="_B.bmp"
link(onStrCatDlm,7977776:doSave,[])
link(Str1,310918:Var2,[])
}
Add(PictureStream,13761447,588,448)
{
link(Bitmap,10033991:Var1,[(601,313)])
}
Add(GetDataEx,10033991,798,308)
{
link(Data,7984993:Var3,[(804,194)])
}
Add(PictureStream,16229886,616,518)
{
link(Bitmap,13847155:Var1,[(629,320)])
}
Add(GetDataEx,13847155,861,315)
{
link(Data,15900645:Var3,[(867,194)])
}
Add(PictureStream,7977776,651,574)
{
link(Bitmap,4907812:Var1,[(664,432)(902,432)(902,334)])
}
Add(GetDataEx,4907812,924,329)
{
link(Data,11943658:Var3,[(930,194)])
}
Add(GetDataEx,6491246,518,497)
{
Angle=3
link(Data,11509667:Value,[(370,502)])
}
Add(GetDataEx,310918,567,497)
{
Angle=3
link(Data,6491246:Var3,[])
}
Add(RGB,14052509,623,252)
{
link(onRGB,13276332:doRGB,[])
link(R,6968858:Var2,[])
link(G,277038:Var2,[])
link(B,277038:Var3,[(643,245)])
}
Add(RGB,13276332,665,252)
{
link(onRGB,7580633:doRGB,[])
link(R,7976564:Var2,[])
link(G,14456590:Var2,[])
link(B,14456590:Var3,[(685,236)])
}
Add(RGB,7580633,707,252)
{
link(onRGB,1858076:doDraw,[])
link(R,15883674:Var2,[])
link(G,5318820:Var2,[])
link(B,5318820:Var3,[(727,228)])
}
Add(GetDataEx,277038,630,240)
{
Angle=3
link(Data,6968858:Var3,[])
}
Add(GetDataEx,6968858,623,240)
{
Angle=3
link(Data,11657031:R,[(615,245)(615,306)(559,306)])
}
Add(GetDataEx,14456590,672,231)
{
Angle=3
link(Data,7976564:Var3,[])
}
Add(GetDataEx,7976564,665,231)
{
Angle=3
link(Data,11657031:G,[(600,236)(600,299)(566,299)])
}
Add(GetDataEx,5318820,714,223)
{
Angle=3
link(Data,15883674:Var3,[])
}
Add(GetDataEx,15883674,707,223)
{
Angle=3
link(Data,11657031:B,[(591,228)(591,291)(573,291)])
}

карма: 19

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#8: 2017-02-16 00:48:14 ЛС | профиль | цитата
Леонид писал(а):
или так

Ну да, те же фаберже, только вид сбоку. Единственный недостаток всей этой схемы -- крайне низкое быстродействие. По-хорошему, этот алгоритм надо переводить в IC на метод Scanline
карма: 22

0
8
Сообщение
...
Прикрепленные файлы
(файлы не залиты)