[英]Positioning images based on detecting reference points within another image
例如,假設我有一棵樹的位圖圖像,而我想將其他圖像(例如蘋果的位圖)放置在樹葉上。 有沒有一種方法可以在葉子上放置標記(例如紅色的點),然后以編程方式將蘋果圖像放置在這些點的中心?
作為一項非常基本的測試,我的圖像背景為白色,中間有一個紅色像素。 我想計算該紅點的坐標,然后將ImageView設置為放置在這些坐標上。
我該怎么辦?
這取決於您的“紅點”標記在哪里。 如果它位於中心或任何特定點(例如寬度的2/3,高度的1/3),則可以將布局寬度和高度相除以獲得正確的坐標。
在其他情況下,最好在重寫的dispatchDraw方法中設置白色背景並手動繪制標記。 在這種情況下,您只需要知道標記的坐標即可。
聽起來您是將標記放到位圖上的人。
如果是這樣,您是否真的有充分的理由為什么要嘗試將標記作為數據嵌入位圖本身? 這導致您不得不重新發現位置的問題。 這可能是一項模糊的任務……如果樹旁有紅色的谷倉怎么辦? 您要在構成谷倉的每個紅色像素上放置一個蘋果圖像嗎?
您可能真正想要的是定義一種格式,該格式具有一個沒有標記的位圖,然后是一個單獨的坐標列表,用於您希望蘋果移動的位置。 這不需要任何發現...您只需將圖像與列表一起運送就可以了。
在某些情況下,沒有可以放置信息的“側面”,實際上您需要將其放入位圖文件。 如果是這樣,還請考慮將某些隱藏位置放置在位圖中... Exif等元數據:
http://en.wikipedia.org/wiki/Exchangeable_image_file_format
因此,這是中間立場,在這里您可以設法獲取要“隱藏”到包含圖像的文件中的點列表,而無需實際修改像素。
如果您發現自己確實陷入了必須將這些坐標規范放入圖像數據中的情況,那么可以肯定地更容易檢測到比紅點更獨特的東西。 也許您對圖像有所了解...例如,它們是PNG文件,沒有任何透明度。 您可以使透明點表示替換點。
圖案越大越怪異,因此越稀有...因此,如果您知道要粘貼的對象總是大於3x3,則可以為標記提供非常不尋常的3x3像素印記發生在自然界。 如果未壓縮為24位顏色,則足夠隨機的模式將僅偶然發生1 /(2 ^ 24 ^ 9)。 少數; 盡管壓縮會創建更多的灰色區域。
但更重要的是:如果您沒有充分的理由將一個簡單的問題變成復雜的圖像識別練習,那就不要了。 只需將點列表保留在側面的某處,這樣就不必在圖像中尋找它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.