J'ai une image unicolore et j'ai besoin de redimensionner certaines parties de celle-ci, avec une échelle différente. Le résultat souhaité est montré sur l'image. J'ai examiné l'application de maille de grille dans Opengles, mais je n'ai pas pu trouver du code d'échantillon ou un tutoriel plus détaillé. J'ai aussi consulté imgwrap mais aussi loin que je peux voir que cette bibliothèque nécessite un cadre QT . Toute idée, échantillon de code ou de liens pour la lecture ultérieure sera appréciée, merci. P>
6 Réponses :
Quelques idées: P>
Toute idée que CiFilter ferait le travail?
Oui, c'est la question évidente, ils ont beaucoup plus d'options que j'ai jamais utilisées. Si vous avez accès à cette année, des échantillons de WWDC, vous avez eu une belle démo-application si vous pouvez tester tous les filtres (aller au portail du développeur). Une autre liste est ici: développeur.Apple. com / bibliothèque / iOS / # documentation / graphiquesImagi ng / ...
Je ne suis pas sûr, mais je suggère que si vous voulez faire ce type de travail, vous devez recadrer une partie de l'image et appliquer votre fonctionnalité de redimensionnement / fonctionnalité dans cette partie recouverte de l'image et mettre en position à la position. Je ne sais pas que mon opinion n'est pas sûr que cela soit vrai pour vous ou non. P>
ici aussi je vous donne le lien de la question s'il vous plaît lisez-le, il pourrait être utile dans votre cas: p>
Seule à l'échelle des parties spécifiques de Image dans l'application iPhone? P>
La réponse de MRTJ est plus proche de ce que je pense voeuté.
Merci ipatel, j'ai essayé de recadrer l'image et redimensionner des pièces spécifiques, mais le problème dans cette approche est que lorsque l'image est redimensionnée à recadrer, puis composée ensemble, il y aura des bords et l'image ne semblera pas cohérente.
Le problème que vous rencontrez est appelé "gauchissement de l'image" dans les graphiques informatiques. Vous devez d'abord définir des points de contrôle dans l'image d'origine et les points correspondants dans une image de destination d'échantillon. Ensuite, vous devez calculer un champ de déplacement dense (dans cette application appelée également la grille d'emballage) et simple appliquer ce champ à l'image d'origine. P>
Plus pratiquement: votre meilleur pari sur iOS sera de créer une grille 2D de sommets dans OpenGL. Mappez votre image originale comme une texture sur cette grille et déformez la grille d'origine en déplaçant certains de ses points. Ensuite, vous prenez une capture d'écran de l'image résultante avec GlreadPixels. P>
Je ne connais pas de CIFILTER qui impliquerait la cartographie de champ de déplacement de ce type. P>
update: strong> J'ai trouvé également un exemple de code qui utilise 8 points de contrôle pour Morph Images avec OpenCV. http://enfineering.blogspot.it/2008/07/Image -Morphing-with-opencv.html p>
opencv a des ports de travail sur iOS, de sorte que vous puissiez une expérience simple avec le code sur le lien ci-dessus également sur un périphérique cible. P>
Merci MRTJ, votre réponse est la plus probablement la meilleure façon de le faire, mais de la consommation la plus difficile et du temps. J'ai déjà écrit en question que je cherche une approche plus légère.
Ne vient rien dans mon esprit qui serait plus simple. Si vous avez besoin d'un tutoriel rapide et pratique sur OpenGL, je pourrais recommander iPhoneDevelopment.blogspot.it/2009/05/...
J'ai trouvé (et ajouté) également une implémentation OPENCV pour l'algorithme décrit ci-dessus.
Vous voudrez probablement regarder OpenGL Shaders. Ce que je ferais, c'est que je chargerais l'image en tant que texture, appliquez un fragment Shader (qui est un petit programme qui vous permettra de disttraper l'image), rendez les résultats à une texture et affichez cette texture. ou l'enregistrez comme un bitmap. p>
Ce ne sera pas simple, mais il y a un exemple de code là-bas pour d'autres distorsions. Voici un tourbillon dans des shaders: http://www.geeks3d.com/ 20110428 / Shader-Bibliothèque-Swirl-Swirl-post-traitement-filtre-in-GLSL / p>
Je ne pense pas qu'il y ait un moyen plus facile de le faire sans impliquer OpenGL, et vous ne trouveriez probablement pas de grandes performances dans le faire en dehors du GPU non plus. P>
Merci Colin C'est probablement un moyen le plus puissant de faire la mes exigence, mais la question de l'IM NA, j'ai écrit que je cherche une approche plus légère que OpenGL.
Ouais, j'ai vu ça. Je ne suis tout simplement pas sûr qu'il y a une approche plus légère que OpenGL pour cela. Cela peut être aussi léger que possible. :)
Vous voudrez peut-être essayer Cet exemple en utilisant Splines minces et opencv. Ceci, à mon avis, est la solution la plus simple à essayer en ligne. P>
Cela a l'air génial! Comme je le vois, c'est un peu facile de créer une chaîne d'image avec maille ou je me trompe? J'ai déjà mis en œuvre GPUIMAGEBULDISTORISTORISTORLITTORISTORISTORISTORISTORISTORISTORISTORISTORISTORISTORISTORISTORISTORISTORISSÉS, mais cela peut être utile si le client modifie les exigences.
C'est sûr que c'est génial. Aucune des bibliothèques ne donne une interface aussi simple que ceci. Si vous avez besoin de distorsions plus personnalisées que de GPUIMAGEBULGEDISTORISTORISTORISTORISTORISTORISTORISTORISTORISTORISTORISTORIQUES, Ceci est une excellente option.
Je vous suggère de consulter Brad Larson's Projet GPuimage sur GitHub. Sous GPuImageBulgStorstorstTartimilter code>, que vous devriez pouvoir adapter à vos besoins. P>
Merci, c'est la solution que j'ai choisie entre-temps et ses œuvres assez bien pour mon problème jusqu'à présent.
Cela me rappelle des effets de blague et de ponte dans Photoshop.
Cela semble serviable: Stackoverflow.com/a/10230515/210171