Partage
  • Partager sur Facebook
  • Partager sur Twitter

Récuperer les infos des pixels de l'écran

22 novembre 2023 à 9:36:44

Bonjour, 

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)

Merci, d'avance pour votre aide.

  • Partager sur Facebook
  • Partager sur Twitter
22 novembre 2023 à 16:09:38

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

  • Partager sur Facebook
  • Partager sur Twitter
22 novembre 2023 à 18:19:17

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)

  • Partager sur Facebook
  • Partager sur Twitter
22 novembre 2023 à 19:04:37

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

  • Partager sur Facebook
  • Partager sur Twitter
23 novembre 2023 à 0:18:43

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.

Tu veux faire un bot qui casse ces sécurités ?

  • Partager sur Facebook
  • Partager sur Twitter

Recueil de code C et C++  http://fvirtman.free.fr/recueil/index.html

23 novembre 2023 à 8:58:52

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



  • Partager sur Facebook
  • Partager sur Twitter
23 novembre 2023 à 18:06:23

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.

  • Partager sur Facebook
  • Partager sur Twitter
Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
24 novembre 2023 à 22:32:17

ThibaultVnt a écrit:

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.




N'y aurait t'il donc aucune solution ?
  • Partager sur Facebook
  • Partager sur Twitter
25 novembre 2023 à 15:21:42

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

  • Partager sur Facebook
  • Partager sur Twitter
25 novembre 2023 à 17:01:46

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

-
Edité par spligta 25 novembre 2023 à 17:06:26

  • Partager sur Facebook
  • Partager sur Twitter
25 novembre 2023 à 17:09:34

spligta a écrit:

J'éspère que j'ai été plus précis.

Pour moi, pas vraiment.

spligta a écrit:

Mais cela existe déja. 

Le mieux pour comprendre, c'est que tu nous montres ce qui existe déjà, on comprendra peut-être mieux.

  • Partager sur Facebook
  • Partager sur Twitter
...
25 novembre 2023 à 17:34:21

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.

-
Edité par spligta 25 novembre 2023 à 17:53:13

  • Partager sur Facebook
  • Partager sur Twitter
26 novembre 2023 à 19:31:32

J'ai toujours rien compris, chaque message semble décrire un projet différent mais si ça existe déjà alors utilise ce qui existe.

Si ton but n'est pas éducatif, il n'y a aucun intérêt à réinventer une roue carrée

  • Partager sur Facebook
  • Partager sur Twitter