Je veux créer un programme, qui puissent récupérer les informations de tout les pixels de l'écran (tel que pixel x = 1; y =1 color RGB = xxx), pour ensuite les analyser et réagir en fonctions. Je souhaiterais stocker que les images qui sont différents de leur précédent. tels que, si image 1 = a et image 2 = a, alors image 2 ne soit pas stocker mais si image 3 = b, alors on le stocke. Donc, en soit, je n'ai pas besoin que les données de l'image traiter soit compréhensible et visible par un humain, comme avoir une image .jpeg ou autre au contraire cela pourrais même "ralentir" le programme je trouve. C'est pour ça, que j'aimerais éviter de screen shot.
Pour cela je me suis pencher sur les bibliothèque de traitements d'image tel que OpenCv, mais il y'a très peu de documentations dessus (et le peut de doc que j'ai trouver est ancien), surtout pour un utilisateur de code::blocks, et puis ensuite, je me suis renseigné sur l'API de windows / Winrt, mais de ce que j'ai vue, il faudrait que je change d'IDE et que je passe sous visual studio, si je ne fait pas d'erreur. (je suis sous Windows 11)
Alors, m'a question est : Quel library répondrait au mieux à ses besoins là, tout en restant sous code::blocks. (Je suis aussi tomber sur la library SDL, pensez-vous qu'il puisse répondre aux exigences)
Il n'y a aucune bonne raison de rester sur code block à notre époque, rend toi service et passe sur un IDE plus récent.
Visual Studio community, VSCode avec quelques extensions (un peu chiant à setup pour du C++ cependant), QtCreator sont trois IDE gratuits et modernes qui répondront à tous tes besoins et qui seront bien plus simples à utiliser que code block le dinosaure.
Pour répondre à ta question, si tu veux récupérer l'image de l'écran complet je penses que tu n'auras pas d'autre choix que de passer par l'API windows qui te permettra de stocker tous les pixels affichés à l'écran dans un HBITMAP
Suivant les opérations que tu auras à faire sur ton image, utiliser open cv et convertir le HBITMAP en cv::Mat est assez simple et te donnera accès a toutes les opérations et algo proposé par OpenCV.
Il faudrait que tu en dises plus sur ce que tu veux faire pour pouvoir te donner des réponses plus précises, là c'est beaucoup trop vague
Pour code blocks, c'est une question d'habitude mais, oui, J'vais installer l'API avec Visual studio, au lieu de faire compliqué.
Puis, pour être plus précis, je cherche à créer un programme, qui pourrait, en gros faire de la reconnaissance d'image en fonction de ces expériences
Ex: Si le programme à un ensemble d'image de lettre (A, B, C...) en mémoire, alors dans n'importe quel image il doit être en capacité de me dire si il y'a des lettres ou pas. Pareil pour des voitures, des animaux... Il doit pouvoir décomposer l'image et trouver les caractéristique (attribut) similaires des images en mémoires à l'image actuellement reçu, et ainsi générer un résultat du genre :
" je vois un rétroviseur dans l'image A(actuelle), et dans ma base de données, tout les voitures ont un rétro alors j'en conclue, que c'est image contient un bout de voiture".
Autrement dit, il doit traiter les informations visuelle, comme un humain (ou s'en rapprocher, tout du moins)
Du coup pourquoi as tu besoins de prendre l'image de tout ton écran ?
Visiblement ce que tu veux faire c'est de la classification d'image, ce qui ce fait en principe avec des réseaux de neurones que l'on entraine sur une banque d'image connue.
Pour l'exemple des lettres et en simplifiant à l'extrême, il te faut donc un dossier d'image avec pleins d'image de lettre et un fichier qui indique que le fichier "lettreA.png" est un A. On entraine le réseau de neurone essayant de trouver quelle lettre est dans l'image "lettreA.png", on vérifie la réponse dans le fichier et on corrige les paramètres du réseau en fonction de notre erreur jusqu'à ce qu'on réussisse à trouver la bonne lettre dans toutes les images de notre banque. A partir de là, on peut espérer que le réseau soit assez bien réglé pour être maintenant capable de trouver quelle est la lettre dans une image inconnue.
Donc à priori, pas besoin de faire des captures d'écran jusqu'ici.
Par contre, avec ce que j'ai décrit rapidement le réseau sera juste capable de trouver quelle est la lettre si tu lui donnes une image contenant uniquement une lettre. Si tu lui donnes la photo d'un texte, on sera bien incapable de savoir quelles sont toutes les lettres présentes dans l'image. Ca serait bien plus compliqué de faire ça
Je ne sais pas si tu t'en rends compte, mais ce que tu décris est un projet très compliqué et qui demande énormément de travail même quand on sait déjà comment s'y prendre. Entrainer un réseau de neurone pour qu'il soit capable de faire la différence entre un vélo et une moto sur une photo c'est déjà pas de la tarte, alors si on veut on programme général, capable de travailler en même temps sur des lettres, sur des véhicules partiellement visibles, sur des animaux, ... bonne chance !!
- Edité par ThibaultVnt 22 novembre 2023 à 19:05:29
Reconnaître un rétroviseur ou un animal sur une image est extrêmement compliqué.
C'est d'ailleurs pour ça que certaines vérifications que tu n'es pas un bot te demandent de reconnaître des objets... ou des lettres... pile ce que tu dis.
Récupérer des pixels qui ne font pas partie des fenêtres de l'application, j'espère bien que l'OS verrouille ce genre de d'accès quand une application utilise un DRM.
Pour ne pas activer des anti-virus, je pense qu'un driver vidéo est plus adapté.
Après, même sans les problèmes de droit/anti-virus/etc... les API Windows pour faire des snapshots d'écran, c'est pas des foudres de guerre et avec les résolutions et rafraichissement actuelles, ça doit être encore bien pire.
Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
Du coup pourquoi as tu besoins de prendre l'image de tout ton écran ?
Visiblement ce que tu veux faire c'est de la classification d'image, ce qui ce fait en principe avec des réseaux de neurones que l'on entraine sur une banque d'image connue.
- Edité par ThibaultVnt 22 novembre 2023 à 19:05:29
Parce que je veux qu'il puissent agir, comme un humain sur un ordinateur. Par exemple : A sa maturité, je veux qu'on lui demandant de me créer, un petit site web, de présentation, de modèle, de voiture française. Avec l'apprentissage en amont que je lui aurait donner, il devra reproduire ce qu'il à appris pour atteindre son objectifs. Un peu comme-ci je suivais un tuto youtube, pour créer le site Openclassroom de A à Z, pour m'aider à créer mon propre site.
ThibaultVnt a écrit:
Pour l'exemple des lettres et en simplifiant à l'extrême, il te faut donc un dossier d'image avec pleins d'image de lettre et un fichier qui indique que le fichier "lettreA.png" est un A. On entraine le réseau de neurone essayant de trouver quelle lettre est dans l'image "lettreA.png", on vérifie la réponse dans le fichier et on corrige les paramètres du réseau en fonction de notre erreur jusqu'à ce qu'on réussisse à trouver la bonne lettre dans toutes les images de notre banque. A partir de là, on peut espérer que le réseau soit assez bien réglé pour être maintenant capable de trouver quelle est la lettre dans une image inconnue.
Donc à priori, pas besoin de faire des captures d'écran jusqu'ici.
- Edité par ThibaultVnt 22 novembre 2023 à 19:05:29
En effet je ne recherche pas spécialement la capture d'ecran "classique" (image par image) comme expliquer plus haut, je veux, qu'il puissent analyser un flux continue d'image, puis non seulement extraire et isoler des "attribut d'objet" qu'il aura en mémoire mais aussi de relié tout les images du flux entre eux, pour lui donner une logique.
Fvirtman a écrit:
Salut,
Reconnaître un rétroviseur ou un animal sur une image est extrêmement compliqué.
C'est d'ailleurs pour ça que certaines vérifications que tu n'es pas un bot te demandent de reconnaître des objets... ou des lettres... pile ce que tu dis.
Oui, je sais que c'est compliqué mais je veux voir, le résultat que ça donnera.
ThibaultVnt a écrit:
Fvirtman a écrit:
Tu veux faire un bot qui casse ces sécurités ?
Ca en a tout l'air, je me suis dit exactement la même chose
Je n'y avais pas penser, que pour atteindre mon objectifs, il doit au moins être capable de passer cette sécurité.
bacelar a écrit:
Récupérer des pixels qui ne font pas partie des fenêtres de l'application, j'espère bien que l'OS verrouille ce genre de d'accès quand une application utilise un DRM.
Pour ne pas activer des anti-virus, je pense qu'un driver vidéo est plus adapté.
Après, même sans les problèmes de droit/anti-virus/etc... les API Windows pour faire des snapshots d'écran, c'est pas des foudres de guerre et avec les résolutions et rafraichissement actuelles, ça doit être encore bien pire.
Je n'aime pas "casser" les idées des gens, parce que je pense que c'est en visant haut qu'on progresse si on travail et qu'on se donne les moyens mais là ... je suis désolé de te dire ça mais il faut redescendre sur terre ton projet est complètement irréaliste
Je ne pense même pas qu'un outil d'IA aussi puissant que ce que tu décris existe, ni même qu'il verra le jour dans un avenir proche. Ce que tu décris est un truc de dingue.
spligta a écrit:
A sa maturité, je veux qu'on lui demandant de me créer, un petit site web, de présentation, de modèle, de voiture française. Avec l'apprentissage en amont que je lui aurait donner, il devra reproduire ce qu'il à appris pour atteindre son objectifs. Un peu comme-ci je suivais un tuto youtube, pour créer le site Openclassroom de A à Z, pour m'aider à créer mon propre site.
ChatGPT est très loin d'être capable de générer un site de A à Z, alors que ça fait des années qu'il est développé et amélioré par une armée d'ingénieurs très compétents
Comme a dit Fvirtmann, un programme capable de passer les tests de reconnaissance de bot en sélectionnant les bonnes images c'est déjà extrêmement compliqué, toi tu vises encore plus haut.
Tu te rends compte aussi des problèmes de sécurité évident d'un programme capable de remplacer l'humain et d’interagir en complète autonomie avec toutes les informations affichées à l'écran ? Même si on ignore la question de sécurité, ça n'a rien à voir avec un programme capable de créer un site web (IA générative comme chatGPT). Reconnaitre des images, c'est encore différent.
Tu veux faire un programme qui regrouperait plusieurs IA avec des rôles complètement différentes et toutes bien plus performantes que ce que la recherche est actuellement capable de produire. Tu veux pas non plus que ton programme te construise une fusée pour aller visiter Mars au passage ? Une petite fonctionnalité de plus c'est pas grand chose
Si jamais tu arrives à faire ce que tu veux faire, publies tes recherches et tu rafles un prix nobel à coup sûr
Je ne dit pas ça méchamment, mais si tu ne sais pas comment ajouter OpenCV à ton projet sur CodeBlock, c'est que tu es plus proche du débutant en C++ que de l'expert de renommée mondiale Penche toi sur des projets plus réalistes et à ta portée pour progresser, tu ne te rends vraiment pas compte que ce que tu décris a 10/15 ans d'avance sur les recherches les plus récentes en IA
Je ne pense pas que vous m'avez compris. Vous parler comme si cela n'avait jamais été fait, un truc de "dingue" "10/15 ans d'avance". Mais cela existe déja. Alors Je vais essayer de réexpliquerai de la manière la plus simple possible. Je veux un générateur d'image à partir d'un ensemble d'image et cela de manière continue. Quand je dit être capable de créer un site, je me suis mal exprimer je ne veux pas qu'il me code un site mais m'affiche, par exemple un site openclassroom dans un autre contexte, dans ce cas "l'image" d'un site (avec toute ses pages) openclassroom qui proposerais des voiture. Des templates automatiser. Ce qui se fait à la main avec Wix par exemple.
Pour simplifier encore plus je cherche à faire un programme d'assemblage et découpage d'image automatique. Cela se fait déjà, notamment avec les IA, générateurs d'images
en fonction cela donnerais :
image fonction(img1, img2,...)
{
//méthode combinaison jet découpe des imgs en fonction de... ( avec méthode capable de déceler les couleurs et la localisation des pixels)
return nouvelle_img;
}
J'éspère que j'ai été plus précis.
Ce que je suis venu demander de base c'est une library ayant des fonctions capables de récupérer les données de couleur et de localisation de pixels d'un écran
Je ne sais pas pourquoi, je n'y ai pas penser plus tôt. C'est exactement, un logiciel de montage automatiser. Récupérer des images et les modifiés automatiquement, à l'aide d'un modèle (groupe d'image).
Edit : Image récupérer = tout l'écran, si possible.
Recueil de code C et C++ http://fvirtman.free.fr/recueil/index.html