1 00:00:00,840 --> 00:00:05,641 Nesta seção, vamos tomar as técnicas que construímos até agora, mesmo com a 2 00:00:05,641 --> 00:00:10,210 Quatro instrução de loop e se a técnica e média para detectar as áreas de cor, 3 00:00:10,210 --> 00:00:14,996 e colocá-los juntos para fazer um efeito de filme realmente especial. Portanto, este efeito especial 4 00:00:14,996 --> 00:00:19,477 chamado elenco azul. E noto que você pensa como dados de vídeo 5 00:00:19,477 --> 00:00:23,905 é realmente apenas fez uma série regular de imagens estáticas só mostrou algo como 6 00:00:23,905 --> 00:00:28,492 20 a 60 vezes por segundo. Assim, para os nossos propósitos, só vai fazer o efeito especial 7 00:00:28,492 --> 00:00:33,293 imagens estáticas, e você pode ver como você pode generalizar para os filmes. Assim, a idéia é que você 8 00:00:33,293 --> 00:00:37,561 ser um modelo muito simples. Suponha que você tenha a imagem sinal de stop. Então nós temos, nós falamos 9 00:00:37,561 --> 00:00:41,551 sobre o código para detectar o vermelho em aqui. A Tela Azul 10 00:00:41,561 --> 00:00:45,829 Na verdade, nós vamos ter que chamar uma segunda imagem, a imagem de fundo. 11 00:00:45,829 --> 00:00:50,234 E a idéia é que podemos detectar o vermelho, como fizemos antes. Mas sempre 12 00:00:50,234 --> 00:00:54,351 Eu recebo um pixel na área vermelha aqui, quero pensar sobre o tipo de 13 00:00:54,351 --> 00:00:59,042 pixel correspondente na imagem outro. E eu vou copiar o pixel em 14 00:00:59,042 --> 00:01:03,676 sorta preencher toda a área aqui com pixels vermelhos aqui a partir de outro 15 00:01:03,676 --> 00:01:07,746 imagem. Desculpe, é um diagrama de um pouco mais detalhada do mesmo. Portanto, eu faço 16 00:01:07,746 --> 00:01:11,959 Exemplos de um pouco mais. Mas teremos um loop onde somos quatro tipos de 17 00:01:11,959 --> 00:01:16,379 através desta imagem loop. E nós temos uma declaração que irá se identificar 18 00:01:16,379 --> 00:01:20,537 alguns dos pixels até agora. Então vamos dizer que nós identificamos esse pixel à esquerda 19 00:01:20,537 --> 00:01:24,542 imagem. Para o pixel tem algumas coordenadas XY e nós não mexeu com o 20 00:01:24,542 --> 00:01:28,650 Muito XY até agora, mas, você sabe, talvez é de 200 X e Y é de 100 ou o que quer. 21 00:01:28,805 --> 00:01:33,212 Então, nós queremos fazer é pegar esses dois números. E depois encontrar a correspondente 22 00:01:33,212 --> 00:01:37,750 pixel da outra imagem aqui. Então, talvez 200-100, ou seja o que for. 23 00:01:37,750 --> 00:01:42,840 Há alguns pixels que correspondem. Assim, uma vez que temos essa imagem para um 24 00:01:42,840 --> 00:01:47,867 pixel correspondente na imagem. Então, queremos copiá-lo para estabelecer a 25 00:01:47,867 --> 00:01:53,078 de pixel aqui. E você sabe, como? vai funcionar, como copiar um pixel 26 00:01:53,078 --> 00:01:57,143 ¿Em? Você tem que pensar: 'Bem, o que define um pixel? O que faz um pixel 27 00:01:57,143 --> 00:02:01,028 do jeito que? " E a resposta é de apenas três números. É apenas vermelho, 28 00:02:01,028 --> 00:02:04,965 verde e azul. Então, vamos escrever código para classificar de obter o valor vermelho 29 00:02:04,965 --> 00:02:08,950 Esse pixel aqui e depois estabelecido como o valor de vermelho aqui. Da mesma forma para 30 00:02:08,950 --> 00:02:13,139 verde e azul. E configurar os três números para você fazer 31 00:02:13,139 --> 00:02:17,326 pixel na imagem apenas ser exactamente o mesmo como o pixel aqui neste 32 00:02:17,326 --> 00:02:22,183 lado. Então, aqui está algum código, aqui é o nosso primeiro exemplo de código para fazer isso. E mais 33 00:02:22,183 --> 00:02:27,492 Eu sorta descrever o efeito, eu acho que neste caso só pode ser executado para que possamos ver 34 00:02:27,492 --> 00:02:32,417 e depois vamos falar sobre o que fazem as linhas. Então aqui é o meio como 35 00:02:32,417 --> 00:02:37,598 observado acima, o sinal de parada com tudo tudo sinal de parada áreas vermelho. 36 00:02:37,788 --> 00:02:42,969 Nós substituímos o pixel da imagem tem no lugar. Então deixe-me salientar, 37 00:02:43,162 --> 00:02:48,686 o, como as partes deste trabalho. Em primeiro lugar, pelo que foi em todos os exemplos até agora, eu acho que 38 00:02:48,686 --> 00:02:52,866 acabamos de abrir uma imagem, mas pode ter várias imagens. Então aqui 39 00:02:52,866 --> 00:02:56,587 Abra uma outra imagem para o jpeg de folhas, e armazenar em uma variável 40 00:02:56,587 --> 00:03:01,231 retornar a chamada. Até então todo este código que já vimos antes. Eu apenas com a função de loop 41 00:03:01,231 --> 00:03:06,258 Sinal de paragem e de detecção pixels vermelhos. Então a única coisa interessante está aqui em 42 00:03:06,258 --> 00:03:11,169 Se declaração. O que fazemos quando temos um pixel vermelho. E pausas sorta 43 00:03:11,169 --> 00:03:16,729 as três partes. Estas duas primeiras linhas simplesmente ligar e pixel.getY pixel.getX e 44 00:03:16,729 --> 00:03:22,004 os valores resultantes armazenados nas variáveis xe y. Agora eu acho que eu não usei getX 45 00:03:22,004 --> 00:03:26,693 e getY até agora, mas o que tho-que é simplesmente ir a um pixel e 46 00:03:26,693 --> 00:03:31,840 recuperar qualquer x, e para além, portanto, muito semelhante a getRed e GetBlue. 47 00:03:32,311 --> 00:03:37,903 Como já só podem ser armazenadas nestas variáveis x e. E então nesta linha. ME 48 00:03:37,903 --> 00:03:42,681 tomar esses dois números, X e Y. realmente sorta esquerda você pode ler aqui. Portanto 49 00:03:42,681 --> 00:03:47,340 I imagem da parte de trás, de modo é a imagem de folhas. E eu pergunto getPixel, então eu 50 00:03:47,340 --> 00:03:52,116 Você quer recuperar um pixel dela. E então eu tenho que dar algum x e y, neste 51 00:03:52,116 --> 00:03:56,775 se eu quiser usar x e y é x, e foi criado aqui. Como essencialmente 52 00:03:56,775 --> 00:04:01,432 é x, y pixels sinal de parada imagem, dizendo que, qualquer que seja x, y, 53 00:04:01,432 --> 00:04:06,574 vá olhar que s, o pixel na x no mesmo, ea imagem das folhas. OS. Uma vez que temos 54 00:04:06,574 --> 00:04:12,016 que pixel, então eu vou começar uma outra variável chamada de pixel dois. Portanto 55 00:04:12,229 --> 00:04:16,130 Pergunta ¿naturalmente seria como, oh bem, não poderia simplesmente pedir que pixel? Então, nós 56 00:04:16,130 --> 00:04:20,130 pixel não é chamado, porque estamos usando para se referir a pixels pixels 57 00:04:20,130 --> 00:04:23,983 a imagem do sinal de paragem. Assim, dois pixels só parecia óbvio sorta outra 58 00:04:23,983 --> 00:04:29,122 nome para usar. Tudo bem, então agora eu tenho dois pixels e pixels refere-se a dois 59 00:04:29,122 --> 00:04:34,156 o pixel da imagem de fundo da imagem. E agora estes três 60 00:04:34,156 --> 00:04:39,002 linhas de fazer o que eu estava descrevendo anteriormente como uma cópia. Basta ver o primeiro. 61 00:04:39,002 --> 00:04:43,444 Disse ponto pixel, todo vermelho. Como vimos, cerca de 100 vezes. Eu vou setembro 62 00:04:43,444 --> 00:04:48,117 o valor do pixel da imagem de sinal vermelho. E o que, o que eu vou definir 63 00:04:48,117 --> 00:04:52,836 Será que o valor vermelho? E o que eu vou defini-lo, é de cerca de dois pixels, ficam vermelhos. 64 00:04:52,836 --> 00:04:57,699 Então, eu estou recebendo o pixel da imagem, obtendo o valor vermelho. Assim, 160, ou 65 00:04:57,699 --> 00:05:02,252 o que quer. E eu só vou definir a imagem do sinal de stop. Portanto 66 00:05:02,252 --> 00:05:07,175 Repita o procedimento para verde e azul são apenas essencialmente a mesma, estamos copiando o 67 00:05:07,175 --> 00:05:11,786 três tamanhos. Assim, com efeito, essa cópia do pixel. Portanto, é muito 68 00:05:11,786 --> 00:05:16,884 complicado. Eu quero fazer alguns exemplos. Deixe-me fazer um segundo exemplo. 69 00:05:16,884 --> 00:05:22,108 Este é um retrato de bebê Abby, quando ela é de cerca de seis meses de idade. Bebê feliz 70 00:05:22,108 --> 00:05:27,714 sua cadeirinha. E depois, quando ela é uma adolescente pode ficar com raiva de mim por usar 71 00:05:27,714 --> 00:05:33,473 neste exemplo. O que vou fazer isso, ou, neste caso eu quero fazer é, 72 00:05:33,689 --> 00:05:39,088 Observe as áreas verdes da cadeirinha. Eu quero que o tipo de cópia em 73 00:05:39,088 --> 00:05:45,064 deixa de modo a obter este tipo de efeito bebê natureza exuberante. E, como vocês se lembram, há 74 00:05:45,064 --> 00:05:50,934 eram, basicamente, duas coisas que eu precisava para fazer no loop aqui. Bem a primeira coisa que você deve 75 00:05:50,934 --> 00:05:56,538 ponto, então eu estou, eu estou chamando para obter ponto de pixel verde, porque se o teste. Portanto 76 00:05:56,538 --> 00:06:01,677 O primeiro problema foi esse. Obter o pixel para obter dois. Obter o pixel correspondente. 77 00:06:01,677 --> 00:06:07,216 E aqui eu vou escrever uma única linha. Então eu digo, virar. Então eu vou para outro 78 00:06:07,216 --> 00:06:12,451 imagem. Copiar pixels para ganhar pontos. E eu meio que o espaço aqui. Quero obter o 79 00:06:12,451 --> 00:06:16,922 pixel da imagem, e então eu tenho que especificar o x, y. E aqui o que 80 00:06:16,922 --> 00:06:21,220 quero fazer é, bem, quero especificar o x, y do pixel do sinal de parada 81 00:06:21,220 --> 00:06:25,862 imagem. E o que eu fiz anteriormente para que x, y variáveis e bem, tudo bem. Mas 82 00:06:25,862 --> 00:06:30,391 Eu estou, aqui eu estou indo para compactá-lo para baixo para fazê-lo em uma linha. Então, eu realmente 83 00:06:30,391 --> 00:06:34,803 Só posso dizer, pixel.getX. Portanto pixel é o pixel na imagem do sinal de paragem. E 84 00:06:34,803 --> 00:06:39,504 Você só pode chamar getX e você terá o valor de x em quando eu estou sozinho, eu vou colocar 85 00:06:39,504 --> 00:06:45,547 aqui dentro. A chamada back.getPixel. Então esta é a idéia mesma de antes 86 00:06:45,547 --> 00:06:50,622 mas eu só embalado em uma linha. Tudo bem, então um conjunto de linha 87 00:06:50,622 --> 00:06:56,365 dois pixel correspondente no pixel. E então a segunda coisa que devemos fazer 88 00:06:56,365 --> 00:07:01,776 o loop é copiado durante esta operação, e que é literalmente a mesma coisa que eu vou 89 00:07:01,776 --> 00:07:09,000 simplesmente, que eu copiei aqui de cima. Muito bom. Agora livrar-se de branco. 90 00:07:09,000 --> 00:07:15,370 Estas linhas em branco são inofensivos. Ok, então vamos tentar, vamos tentar. Muito bom. Portanto 91 00:07:15,370 --> 00:07:21,579 Você pode ver que nós temos, estamos ficando um pouco da folha de dados aqui, mas 92 00:07:21,579 --> 00:07:29,451 não um pouco mais fino. Então, precisamos torná-lo um pouco menor. 2,4 é uma 93 00:07:29,451 --> 00:07:45,790 pouco mais, quero mais. Completar dois. Só um pouco mais e [som] 94 00:07:45,790 --> 00:07:53,716 É muito. [Risos] Certo. Então vamos tentar 1,05. É muito para mim. Bem, eu acho 95 00:07:53,716 --> 00:07:57,812 isso é muito bom. Como você pode ver, é uma espécie de, você sabe, não havia setas verdes 96 00:07:57,812 --> 00:08:01,553 aqui. Há uma espécie de zona de sombra que tem, é, talvez apenas 97 00:08:01,553 --> 00:08:05,447 verde. E então havia alguns cobertores verdes que ordenados a partir daqui 98 00:08:05,447 --> 00:08:09,240 pontilhada com essas folhas. É um belo efeito. Ou, é um pouco perturbador, 99 00:08:09,240 --> 00:08:13,437 direito, temos recebido estes pixels na imagem do boletim e colocá-los numa espécie de 100 00:08:13,437 --> 00:08:17,228 esta outra imagem e aparência, bem, não inteiramente realista. Mas ele podia ver 101 00:08:17,228 --> 00:08:20,970 onde, com ajustes, pode obter o efeito real. Ok, então vamos tentar uma 102 00:08:20,970 --> 00:08:28,858 como nos filmes. Assim, o medo é a nossa estrela de cinema bonito. E eu tenho de tirar uma foto de macaco 103 00:08:28,858 --> 00:08:33,764 frente de um fundo azul. É apenas uma toalha azul. Note-se que o macaco é 104 00:08:33,967 --> 00:08:39,322 marrom e tem uma barriguinha aqui e Olá, esta banana é uma espécie de luz 105 00:08:39,322 --> 00:08:44,692 amarelo. Então, se você pensar de marrom e castanho e amarelo são todos os tipos de. Por cerca de 106 00:08:44,692 --> 00:08:48,607 ¿Amarelo, certo? Portanto, há uma grande quantidade de vermelho / verde, eu costumava fazer. Não muito 107 00:08:48,607 --> 00:08:52,946 azul. Ele separa o fundo azul, em termos de pensamento do macaco 108 00:08:52,946 --> 00:08:57,125 em termos de RGB, que vai funcionar muito bem. Então aqui é o que eu uso como o 109 00:08:57,125 --> 00:09:01,676 Fundo. Este é um candidato para uma das fotos mais famosas já feitas. Este 110 00:09:01,676 --> 00:09:05,697 é uma imagem tirada pelos astronautas da Apollo como eram oito, estavam em 111 00:09:05,697 --> 00:09:10,087 órbita. Eles estavam voando ao redor da lua, e como eles vieram aqui, em torno da Terra 112 00:09:10,087 --> 00:09:14,585 se aproximava. Digite show da terra no horizonte da Lua. [Inaudível] 113 00:09:14,585 --> 00:09:19,894 apenas uma linha de vida pouco todos nós somos. Então, o que eu faço é começar com o macaco 114 00:09:19,894 --> 00:09:25,315 imagem, e todos esses pixels azuis, quer jogar em pixels da Lua 115 00:09:25,315 --> 00:09:31,815 imagem. E assim seria parecido com o macaco é como, em férias na lua. Então, eu vou 116 00:09:31,815 --> 00:09:40,052 simplesmente pegar. O código para começar. Vamos ver. Ok, então o que eu faço é, para 117 00:09:40,052 --> 00:09:46,778 Sim, quero dizer, se você começa azul. Então, vamos identificar o direito Quer um fundo azul? E se 118 00:09:46,778 --> 00:09:53,590 é o fundo azul, e, em seguida, quero jogar em pixels da Lua,. Portanto 119 00:09:53,590 --> 00:09:59,846 Aqui, novamente, a nossa imagem é mono Moon [inaudível] Eu tenho a minha declaração se. E 120 00:09:59,846 --> 00:10:04,092 Então, isso [inaudível] é invariante, certo? É apenas, obter a correspondente 121 00:10:04,092 --> 00:10:08,456 manteve-se inalterada a partir do exemplo anterior. Então é só pegar o correspondente 122 00:10:08,456 --> 00:10:12,528 cópia do pixel em vermelho, verde, azul. Sem a necessidade de mudança em tudo. 123 00:10:12,702 --> 00:10:18,408 Ok, então vamos tentar. Ok, então, 1,5 o que está acontecendo aqui é se 124 00:10:18,408 --> 00:10:23,952 Declaração nunca é acionado. Eu especifiquei que eu fiz a cerca muito alta. Vale a pena 125 00:10:23,952 --> 00:10:32,818 vamos tentar 1,3. Ah, só uma caça pequenino. Então, eu estou muito alto. Vamos tentar 1.1. Hey, 126 00:10:32,818 --> 00:10:38,332 direito. Agora você pode ver, você sabe, s, azulado desta parte do azul 127 00:10:38,332 --> 00:10:43,846 fundo era talvez um pouco mais, por isso estamos recebendo, mas não para baixo 128 00:10:43,846 --> 00:10:49,081 aqui. Como deve tentar 1,0. Agora ele está chegando lá. Temos um pouco menos, 129 00:10:49,081 --> 00:10:54,595 para que possamos realmente ir ir em um aqui por isso vou tentar 0,9, como o 130 00:10:54,595 --> 00:11:00,109 Hurdle onde eu estou um pouco abaixo do obstáculo. Ooh, é muito bom. Ver, há um 131 00:11:00,109 --> 00:11:05,650 Lua pouquinho em seu queixo lá. 0,95. Aqui vamos nós, o que é bom 132 00:11:05,650 --> 00:11:10,365 bom. Poderíamos, poderíamos definir isso [inaudível], eu acho, três, há uma 133 00:11:10,365 --> 00:11:16,157 pouco, aqui vamos nós. Eu acho que é perfeito. Portanto, pode ser visto que tem sabe, 134 00:11:16,157 --> 00:11:22,511 como uma estrela de cinema nas batalhas de laser, naves espaciais, o que quer. Muito bom. Apenas para 135 00:11:22,511 --> 00:11:27,245 resumir um pouco. No código que você tem duas imagens em vez de um e depois 136 00:11:27,245 --> 00:11:31,360 percorrer o caminho principal e só um pouco que já fizemos antes, 137 00:11:31,360 --> 00:11:36,150 identificar as áreas de uma cor. E então, depois de ter identificado uma área em 138 00:11:36,150 --> 00:11:40,716 a cor está em causa, então existe esta operação para localizar o correspondente 139 00:11:40,716 --> 00:11:45,282 pixels da outra imagem e, em seguida, copiar os valores de vermelho, verde, azul, para 140 00:11:45,282 --> 00:11:49,677 para obter o efeito. E como você pode imaginar. Você sabe, é muito fácil 141 00:11:49,677 --> 00:11:52,440 são exercícios que trabalham com esta técnica.