{"version":2,"relationshipURLBase":"https://codingai-lec03.pages.dev/course/notebook-blocks/bbf14f2650fc44e3ad84f34d49cdb8ff.html","relationshipResolution":"Resolve relative relationship URLs against relationshipURLBase; complete records and absolute URLs are in blocks.","title":"2. 同一个底图上做干预 · 实现代码","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/bbf14f2650fc44e3ad84f34d49cdb8ff.html","markdown":"https://codingai-lec03.pages.dev/course/notebook-blocks/bbf14f2650fc44e3ad84f34d49cdb8ff.md","pages":[{"id":"reading-opening","title":"2. 同一个底图上做干预 · 实现代码","unit":"2. 同一个底图上做干预 · 实现代码","unitId":"notebook-blocks/bbf14f2650fc44e3ad84f34d49cdb8ff","chapter":"course","number":1}],"aliases":[{"oldId":"b-d876eada5263e11abca88110","targetId":"b-d876eada5263e11abca88110","page":"reading-opening","operation":"move","beforeSHA256":"ee0f99ad7c7d0d958d3e0d80348bfe5a62a81423953405ed50add20d633934dd","afterSHA256":"ee0f99ad7c7d0d958d3e0d80348bfe5a62a81423953405ed50add20d633934dd","reason":"Same source body in authored semantic page"},{"oldId":"b-35b62792042a2463123a5059","targetId":"b-35b62792042a2463123a5059","page":"reading-opening","operation":"move","beforeSHA256":"e89c3ded9e14ce2dae5b9eeba85b7ad20c8f501306992d4af248322ed7569559","afterSHA256":"e89c3ded9e14ce2dae5b9eeba85b7ad20c8f501306992d4af248322ed7569559","reason":"Same source body in authored semantic page"},{"oldId":"b-159a57525c18ff51f07742b2","targetId":"b-159a57525c18ff51f07742b2","page":"reading-opening","operation":"move","beforeSHA256":"e91f24e4e4ca40e2099a0d81d30db6568f4bf2074b499eeee6e3959617bd97ac","afterSHA256":"e91f24e4e4ca40e2099a0d81d30db6568f4bf2074b499eeee6e3959617bd97ac","reason":"Same source body in authored semantic page"},{"oldId":"b-11479645549f1924cca99c83","targetId":"b-11479645549f1924cca99c83","page":"reading-opening","operation":"move","beforeSHA256":"3f002b87ee5d2038f92b49a8b54826e9b65444b765dddaea38342c0fba3e3d3b","afterSHA256":"3f002b87ee5d2038f92b49a8b54826e9b65444b765dddaea38342c0fba3e3d3b","reason":"Same source body in authored semantic page"},{"oldId":"b-8ba7b68b6256a28aaf568dc1","targetId":"b-8ba7b68b6256a28aaf568dc1","page":"reading-opening","operation":"move","beforeSHA256":"7349377186377b5a8d784c55551b08889624c79f65fed3885d6403b690af21bc","afterSHA256":"7349377186377b5a8d784c55551b08889624c79f65fed3885d6403b690af21bc","reason":"Same source body in authored semantic page"}],"blocks":[{"id":"b-d876eada5263e11abca88110","type":"p","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/bbf14f2650fc44e3ad84f34d49cdb8ff.html#b-d876eada5263e11abca88110","content":"[LAB 15 · 语言指代小练习：目标、参照与关系](/course/notebooks/7dc83786d067465aa76264475db2c62d.html)","sha256":"ee0f99ad7c7d0d958d3e0d80348bfe5a62a81423953405ed50add20d633934dd","chapter":{"id":"course","title":"2. 同一个底图上做干预 · 实现代码"},"unit":{"id":"notebook-blocks/bbf14f2650fc44e3ad84f34d49cdb8ff","title":"2. 同一个底图上做干预 · 实现代码"},"page":{"id":"reading-opening","title":"2. 同一个底图上做干预 · 实现代码","number":1},"sectionTitle":"2. 同一个底图上做干预 · 实现代码","currentQuestion":"2. 同一个底图上做干预 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":null,"nextBlock":"b-35b62792042a2463123a5059","prerequisites":[],"relatedBlocks":[]},{"id":"b-35b62792042a2463123a5059","type":"h1","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/bbf14f2650fc44e3ad84f34d49cdb8ff.html#b-35b62792042a2463123a5059","content":"# 2. 同一个底图上做干预 · 实现代码","sha256":"e89c3ded9e14ce2dae5b9eeba85b7ad20c8f501306992d4af248322ed7569559","chapter":{"id":"course","title":"2. 同一个底图上做干预 · 实现代码"},"unit":{"id":"notebook-blocks/bbf14f2650fc44e3ad84f34d49cdb8ff","title":"2. 同一个底图上做干预 · 实现代码"},"page":{"id":"reading-opening","title":"2. 同一个底图上做干预 · 实现代码","number":1},"sectionTitle":"2. 同一个底图上做干预 · 实现代码","currentQuestion":"2. 同一个底图上做干预 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":"b-d876eada5263e11abca88110","nextBlock":"b-159a57525c18ff51f07742b2","prerequisites":[{"id":"b-d876eada5263e11abca88110","url":"#b-d876eada5263e11abca88110","role":"problem-context"}],"relatedBlocks":[]},{"id":"b-159a57525c18ff51f07742b2","type":"p","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/bbf14f2650fc44e3ad84f34d49cdb8ff.html#b-159a57525c18ff51f07742b2","content":"按问题继续","sha256":"e91f24e4e4ca40e2099a0d81d30db6568f4bf2074b499eeee6e3959617bd97ac","chapter":{"id":"course","title":"2. 同一个底图上做干预 · 实现代码"},"unit":{"id":"notebook-blocks/bbf14f2650fc44e3ad84f34d49cdb8ff","title":"2. 同一个底图上做干预 · 实现代码"},"page":{"id":"reading-opening","title":"2. 同一个底图上做干预 · 实现代码","number":1},"sectionTitle":"2. 同一个底图上做干预 · 实现代码","currentQuestion":"2. 同一个底图上做干预 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":"b-35b62792042a2463123a5059","nextBlock":"b-11479645549f1924cca99c83","prerequisites":[{"id":"b-35b62792042a2463123a5059","url":"#b-35b62792042a2463123a5059","role":"section-title"},{"id":"b-d876eada5263e11abca88110","url":"#b-d876eada5263e11abca88110","role":"problem-context"}],"relatedBlocks":[]},{"id":"b-11479645549f1924cca99c83","type":"p","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/bbf14f2650fc44e3ad84f34d49cdb8ff.html#b-11479645549f1924cca99c83","content":"RGB规则提框、错误关键词基线、目标/参照/关系与干预","sha256":"3f002b87ee5d2038f92b49a8b54826e9b65444b765dddaea38342c0fba3e3d3b","chapter":{"id":"course","title":"2. 同一个底图上做干预 · 实现代码"},"unit":{"id":"notebook-blocks/bbf14f2650fc44e3ad84f34d49cdb8ff","title":"2. 同一个底图上做干预 · 实现代码"},"page":{"id":"reading-opening","title":"2. 同一个底图上做干预 · 实现代码","number":1},"sectionTitle":"2. 同一个底图上做干预 · 实现代码","currentQuestion":"2. 同一个底图上做干预 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":"b-159a57525c18ff51f07742b2","nextBlock":"b-8ba7b68b6256a28aaf568dc1","prerequisites":[{"id":"b-35b62792042a2463123a5059","url":"#b-35b62792042a2463123a5059","role":"section-title"},{"id":"b-d876eada5263e11abca88110","url":"#b-d876eada5263e11abca88110","role":"problem-context"}],"relatedBlocks":[]},{"id":"b-8ba7b68b6256a28aaf568dc1","type":"pre","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/bbf14f2650fc44e3ad84f34d49cdb8ff.html#b-8ba7b68b6256a28aaf568dc1","content":"```\ndef scene():\n    img=Image.new('RGB',(160,96),(245,243,236));d=ImageDraw.Draw(img)\n    def cup(x,color):\n        d.rounded_rectangle((x+18,31,x+34,52),radius=7,outline=color,width=5)\n        d.rectangle((x,24,x+25,57),fill=color)\n        d.ellipse((x,19,x+25,29),fill=color)\n    cup(15,PALETTE['red']);cup(109,PALETTE['blue'])\n    d.rectangle((60,65,89,79),fill=PALETTE['brown'])\n    return np.array(img)\nbase=scene();occluded=base.copy();occlusion_mask=np.zeros(base.shape[:2],bool);occlusion_mask[16:62,11:53]=True\noccluded[occlusion_mask]=(115,118,123)\nswapped=base.copy();redmask=np.all(base==PALETTE['red'],axis=-1);bluemask=np.all(base==PALETTE['blue'],axis=-1)\nswapped[redmask]=PALETTE['blue'];swapped[bluemask]=PALETTE['red']\nassert np.array_equal(base[~occlusion_mask],occluded[~occlusion_mask])\nassert np.array_equal(base[~(redmask|bluemask)],swapped[~(redmask|bluemask)])\nfor label,arr in [('base',base),('target-occluded',occluded),('colors-exchanged',swapped)]:Image.fromarray(arr).save(OUT/('lab15-'+label+'.png'))\n```","sha256":"7349377186377b5a8d784c55551b08889624c79f65fed3885d6403b690af21bc","chapter":{"id":"course","title":"2. 同一个底图上做干预 · 实现代码"},"unit":{"id":"notebook-blocks/bbf14f2650fc44e3ad84f34d49cdb8ff","title":"2. 同一个底图上做干预 · 实现代码"},"page":{"id":"reading-opening","title":"2. 同一个底图上做干预 · 实现代码","number":1},"sectionTitle":"2. 同一个底图上做干预 · 实现代码","currentQuestion":"2. 同一个底图上做干预 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":"b-11479645549f1924cca99c83","nextBlock":null,"prerequisites":[{"id":"b-35b62792042a2463123a5059","url":"#b-35b62792042a2463123a5059","role":"section-title"},{"id":"b-d876eada5263e11abca88110","url":"#b-d876eada5263e11abca88110","role":"problem-context"}],"relatedBlocks":[]}]}
