Immagine Ottica: Negozio di ottica a Milano (MI) - immagine ottiche
Embedded Vision Systeme sparen Platz, Strom und Kosten und sind die ideale Plattform für Projekte der künstlichen Intelligenz, Produktionstechnik, Wissenschaft sowie für klassische Bildverarbeitungsaufgaben.
Diese GigE-Platinenkameras bieten kleine PCB-Abmessungen (45 x 45 x 20 mm) und sind perfekt für eine Vielzahl von Anwendungen in der Industrie, der Qualitätssicherung und der Überwachungstechnik geeignet die eine GigE-Schnittstelle erfordern. Neben der unübertroffenen Datenübertragung und den Kabellängen von bis zu 100 Metern, die die GigE-Schnittstelle bietet, sorgen leistungssteigernde Merkmale der CMOS-Kameras wie Binning, Windowing und Hochgeschwindigkeitsauslesung für eine drastische Reduzierung des Bildrauschens.
Macro cexample
As of C11, you can just use call_once, but it requires an explicit flag and a separate function for the actual code. My macro just bundles the flag inside itself to be simpler and also allows an arbitrary block of code.
Cmacros with arguments
Self-promotion: It's great to have authors participate in the community, but not to exploit it as a write-only tool for product announcements or driving traffic to their work. As a rule of thumb, self-promo should be less than a quarter of one's stories and comments.
Finden Sie die perfekte Industrie- oder Platinenkamera für Ihre Anwendungsanforderungen - schnell und effizient mit unserem Kamerafinder.
Wir verwenden erforderliche Cookies und Drittinhalte (z.B. Script-Bibliotheken) um die Funktion unserer Seite zu gewährleisten.
Kompaktes, integriertes Bildverarbeitungssystem zur Entwicklung und Ausführung von Deep Learning- und KI-Vision-Anwendungen.
The Imaging Source blickt auf über 35 Jahre Erfahrung im Bereich der industriellen Bildverarbeitung zurück und freut sich über die Zusammenarbeit mit NVIDIA.
Mit einer Auswahl von über 100 Industriekameras verfügt The Imaging Source über eines der breitesten Portfolios auf dem Markt für industrielle Bildverarbeitung.
I never realized (or I forgot, that's also quite possible) that LINE is the same for all the lines that a macro expands to :o
Möchten Sie sich mit der MVTec Software vertraut machen oder eine bestimmte Softwarefunktion vertiefen? The Imaging Source bietet einführende und fortgeschrittene Produktschulungen an.
Why is this handy? As shown in the macros below, having a unique name allows you to use the same macro multiple times in the same scope or nested scopes and avoid shadows warnings.
DEV Community — A constructive and inclusive social network for software developers. With you every step of your journey.
Function-like macros inC
If EXPR is non-zero, sizeof() will return non-zero that !! will convert to 1; if EXPR is zero, then you’ll get a compile-time error that the assertion failed. (The char c is there just so the struct isn’t empty.)
Macrocalculator
Is STRLITLEN() designed to work for char s[10] = "hello"; STRLITLEN(s) as well as STRLITLEN("hello")? If it is supposed to only allow the latter, one could do:
I was not expecting to find such a high-quality low-level programming post on dev.to. The STATIC_ASSERT_EXPR is brilliant. Thanks for sharing.
Die Embedded-Kameras von The Imaging Source, die in NXP-, NVIDIA Jetson Xavier- und Raspberry Pi-Plattformen integriert sind, bieten fortschrittliche Bildverarbeitung für Embedded-Vision-Anwendungen.
GigE-Board-Level-Kameras mit kleinen PCB-Abmessungen bieten eine unübertroffene Datenübertragung und Kabellängen von bis zu 100 Metern.
The Imaging Source stellt nicht nur eine breite Auswahl von Industriekameras her, sondern fertigt auch maßgeschneiderte Kamera-Lösungen für kundenspezifische Anforderungen. Kunden können kleinere oder größere Änderungen am Gehäusedesign, PCB-Layout, Anschlusstyp, Position und Pinning sowie Änderungen an Software-Treibern und Endanwender-Software spezifizieren. The Imaging Source garantiert kundenspezifische Kameralösungen auf dem gleichen hohen technischen Niveau zu fertigen wie unsere Standard-Kameras.
Für Machine-Vision-Projekte, bei denen gleichbleibende Arbeitsabstände schwer einzuhalten sind, bietet The Imaging Source eine Reihe von USB 3.0 Autofokus-Kameras an.
Für Machine-Vision-Projekte, bei denen gleichbleibende Arbeitsabstände schwer einzuhalten sind, bietet The Imaging Source eine Reihe von USB 3.0 Autofokus-Kameras an.
Usually, it’s a best-practice to enclose multiple statements between a do ... while loop; however, in this case you can’t use one and have the else work. Despite this, it’ll work in most cases.
Das breite Portfolio der industriellen Platinenkameras von The Imaging Source basiert auf verschiedensten CMOS-Bildsensoren, darunter die neuesten Pregius- und STARVIS-Sensoren von Sony sowie kostenoptimierte Sensoren von onsemi. Die Kompatibilität der Platinenkameras zu den Standards USB3 Vision, GigE Vision und GeniCam gewährleistet eine schnelle Integration mit Hardware von Drittanbietern und nahezu allen Bildverarbeitungsbibliotheken.
Mit Auflösungen von 6 MP bis 10 MP bieten diese hochwertigen C-Mount-Optiken eine herausragende Leistung und ein gutes Preis-Leistungs-Verhältnis für Anwendungen mit begrenztem Platzangebot.
Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment's permalink.
MacroC++
Thanks. I'm doing my part to raise the bar. The number of low-quality, poorly-written posts is eye-watering. FYI, it's no better on medium.
Well, unique enough for most cases. Specifically, it forms a unique name only for the line it’s on, for example, UNIQUE_NAME(var) would expand into something like var_42.
it will fail because the compiler can’t know the size. The use of sizeof in the implementation already correctly handles this.
C has static_assert, but it’s more like a statement. What’s needed is a way to use it in an expression. The trick is to realize that static_assert can be used pretty much anywhere, including inside a struct declaration that’s an argument to sizeof() that makes the whole thing an expression:
Diese Platinenkameras erzeugen einen hochwertigen Bildstrom und hohe Bildraten. Zu den Hardware-Funktionen gehören digitales I/O-Strobe, Binning und ROI. Die Kameras der 27er-Serie sind auch als Gehäusekameras erhältlich.
If A isn’t an array, e.g., a pointer, then none of the above works and _Generic matches the default case and returns 0 (false).
So why use it here? In C++, however, using 0[A] will cause trying to use ARRAY_SIZE on an object of a class for which operator[] has been overloaded to cause a compilation error, which is what you’d want.
Dieses Steckernetzteil wurde speziell für The Imaging Source hergestellt, um optimale Leistung und Zuverlässigkeit zu gewährleisten. Es wird in Verbindung mit dem GigE23/PWR/Trig-Adapterkabel verwendet.
If A is really an array, the STATIC_ASSERT_EXPR will be 1 and multiplying by 1 is innocuous. (The compiler will optimize the multiplication away.)
Die Embedded-Kameras von The Imaging Source, die in NXP-, NVIDIA Jetson Xavier- und Raspberry Pi-Plattformen integriert sind, bieten fortschrittliche Bildverarbeitung für Embedded-Vision-Anwendungen.
Diese Einplatinen-GigE-Board-Level-Kameras bieten einen besonders kompakten Formfaktor mit einem abgewinkelten RJ45-Anschluss.
Yes, the syntax of 0[A] is legal. It’s a consequence of the quirky interplay between arrays and pointers in C. Briefly, the a[i] syntax to access the ith element of an array a is just syntactic sugar for *(a+i). Since addition is commutative, *(a+i) can be alternatively written as *(i+a); that in turn can be written as i[a]. In C, this has no practical use.
Mit den Zoomkameras der Z-Serie erhalten Sie auch bei der Aufnahme von Objekten unterschiedlicher Größe und Entfernung eine perfekte Auflösung.
Die bewährten The Imaging Source Board-Level-Kameras sind für kostensensitive, hochvolumige Machine-Vision-Projekte optimiert und bieten maximale Flexibilität für ein breites Spektrum an platzbeschränkten Anwendungen.
Der USB-zu-HDMI-Konverter ermöglicht die direkte Bildübertragung von The Imaging Source's USB3-Industriekameras (33U, 37U und 38U Serie) auf einen HDMI-Monitor.
Bildverarbeitungssoftware, Treiber und SDKs für The Imaging Sources industrielle und eingebettete Bildverarbeitungskameras.
Macro cpreprocessor
The Imaging Source bietet plattformkompatible Kameras und Objektive für den Raspberry Pi 4B - die ideale Plattform für einfache Embedded-Vision-Anwendungen.
USB 3.1-Mikroskopiekameras sind hochmoderne Funktionskameras mit hoher Auflösung und außergewöhnlicher Bildqualität für anspruchsvolle Anwendungen.
Mini-Objektive mit Auflösungen von bis zu 5 MP liefern eine hervorragende Bildqualität und guten Kontrast für Sensorformate bis zu 1/2".
Greifen Sie auf hochwertige Bilder zu, die unsere Industriekameras und Software zur Verwendung in Marketingmaterialien zeigen.
Bleiben Sie auf dem Laufenden mit den neuesten Nachrichten und Einblicken in die Welt der industriellen Bildverarbeitung.
Mit einer Auswahl von über 100 Industriekameras verfügt The Imaging Source über eines der breitesten Portfolios auf dem Markt für industrielle Bildverarbeitung.
Optische Filter für die industrielle Bildgebung zur Verbesserung des Kontrasts, um Bildverarbeitung reproduzierbar und stabil durchzuführen.
Die USB 3.0 Platinenkameras der The Imaging Source 27er Serie verfügen über zuverlässige CMOS-Sensoren von onsemi mit Auflösungen von 1,2 bis 10,7 MP.
Kompaktes, integriertes Bildverarbeitungssystem zur Entwicklung und Ausführung von Deep Learning- und KI-Vision-Anwendungen.
Diese 42-MP-Industriekamera eignet sich perfekt für Qualitätsprüfungsanwendungen und bietet eine außergewöhnliche Bild- und Farbqualität sowie eine automatische Farbkorrektur.
You're misunderstanding what RUN_ONCE is supposed to do. It's working as intended. The idea is that it runs whatever code you give it once for each RUN_ONCE. Neither the macro nor compiler care what that code is, so if you just so happen to give two distinct calls to RUN_ONCE the same code, it assumes you know what you're doing and runs each bit of code once so it will look like it ran the code twice, but it actually didn't.
C macroconcatenate
Optimiert für kostensensitive, hochvolumige Bildverarbeitungsprojekte, bieten die Board-Level-Kameras von The Imaging Source maximale Flexibilität.
Programming in either C or C++ invariably requires using preprocessor macros at some point. Here’s a collection of macros I find particularly handy in most any program. These macros work in either C or C++.
Weitere Cookies, z.B. um zu messen, wie häufig unsere Seite besucht und wie sie genutzt wird, verwenden wir nur, wenn Sie dem ausdrücklich zustimmen.
Finden Sie die perfekte Industrie- oder Platinenkamera für Ihre Anwendungsanforderungen - schnell und effizient mit unserem Kamerafinder.
Indem Sie auf Zustimmen klicken, erklären Sie sich mit den oben beschriebenen Verfahren einverstanden und akzeptieren unsere Datenschutzerklärung. Sie können Ihre Zustimmung jederzeit widerrufen, indem Sie auf Ablehnen klicken.
As I’ve mentioned previously, array parameters simply don’t exist in C (or C++): the compiler rewrites such parameters as pointers.
FPD-Link III-Kameras bieten die volle Funktionalität von MIPI CSI-2-Kameras und ermöglichen Kabellängen von bis zu 15 m zwischen Sensor und Computerplattform.
Predefined macros inC
Die bewährten Platinenkameras von The Imaging Source sind für kostensensitive, hochvolumige Projekte der industriellen Bildverarbeitung optimiert und bieten maximale Flexibilität für eine Vielzahl von Anwendungen.
Diese 12-MP-Mikroskopiekamera wird mit einem Okularadapter geliefert und kann entweder am Okular oder am C-Mount des Mikroskops befestigt werden.
FPD-Link III Boardmodule bieten die volle Funktionalität von MIPI CSI-2 Kameras und ermöglichen Kabellängen von bis zu 15m zwischen Sensor und Computerplattform.
MIPI® CSI-2 Single-Board-Module mit 22-Pin-Schnittstelle bieten eine direkte Kamera-zu-Prozessor-Verbindung mit geringer Latenz und kleinem Hardware-Footprint.
Diese M12-Objektive mit fester Blende sind stoß- und vibrationsfest und bieten eine kostengünstige und robuste Bildgebungslösung.
As consecutive string literals are concatenated in C, the empty string literal can provide rudimentary type-checking. Surely it can be broken, and more constructs can be added to make it more robust, but the added robustness may not be worth the added complexity.
Mini-Objektive mit Auflösungen von bis zu 5 MP liefern eine hervorragende Bildqualität und guten Kontrast für Sensorformate bis zu 1/2".
Diese M12-Objektive mit fester Blende sind stoß- und vibrationsfest und bieten eine kostengünstige und robuste Bildgebungslösung.
Die USB 2.0-Platinenkameras von The Imaging Source verfügen über CMOS-Sensoren von onsemi mit Auflösungen von 0,4 bis 5MP und sind die perfekte Wahl für sehr kostensensitive Bildverarbeitungs-Projekte. Ihr kleiner Formfaktor schafft maximale Flexibilität für eine Vielzahl von Anwendungen - auch im Fall enger Bauräume. Ausgestattet mit einer Vielzahl von Funktionen (z. B. Binning, Windowing und Hochgeschwindigkeitsauslesung) sorgen diese Kameras für eine erhebliche Verringerung des Bildrauschens und bieten auch bei schlechten oder schwankenden Lichtverhältnissen eine hervorragende Bildqualität. Bestimmte Modelle sind mit einer Vielzahl von Eingangs-, Ausgangs-, Strobe- und Trigger-Optionen erhältlich. Die Kameras der 2er-Serie sind auch als Gehäusekameras erhältlich.
Optische Filter für die industrielle Bildgebung zur Verbesserung des Kontrasts, um Bildverarbeitung reproduzierbar und stabil durchzuführen.
GigE-Board-Level-Kameras mit kleinen PCB-Abmessungen bieten eine unübertroffene Datenübertragung und Kabellängen von bis zu 100 Metern.
Diese Einplatinen-GigE-Board-Level-Kameras bieten einen besonders kompakten Formfaktor mit einem abgewinkelten RJ45-Anschluss.
Alternatively, you can use call_once() that is thread-safe. However, call_once() is a bit clunkier to use since it forces you to declare a flag explicitly and put the code into a separate function.
Optimiert für kostensensitive, hochvolumige Bildverarbeitungsprojekte, bieten die Board-Level-Kameras von The Imaging Source maximale Flexibilität.
The first thing needed is a way to determine whether the type of A is actually a statically allocated array (as opposed to a pointer). C++ has std::is_array, but what about C?
Ordinarily, this would compile yet be wrong because sizeof would return the size of the pointer — but that’s why ARRAY_SIZE ensures its argument is an array and not a pointer.
Some compilers warn about this. For those that don’t, can ARRAY_SIZE be defined such that it’ll generate an error if it’s used on a pointer? Yes (mostly).
Dabei setzen wir auch Trackingtechnologien zu Marketingzwecken und von Drittanbietern ein, die ggf. geräteübergreifend Cookies, Fingerprints, Tracking-Pixel und IP-Adressen nutzen.
Die staub- und wasserdichten IP67-zertifizierten FPD-Link III-Kameras bieten die volle Funktionalität von MIPI CSI-2-Kameras und ermöglichen Kabellängen von bis zu 15 m zwischen Sensor und Computerplattform.
It’s defined only if NDEBUG (the macro used with assert) is not defined since it’ll work only when compiling with assertions enabled (the default).
Bildverarbeitungssoftware, Treiber und SDKs für The Imaging Sources industrielle und eingebettete Bildverarbeitungskameras.
USB 3.0-Mikroskopiekameras sind kompakte, voll ausgestattete Kameras, die für viele Mikroskopieanwendungen geeignet sind.
Mit Auflösungen von 6 MP bis 10 MP bieten diese hochwertigen C-Mount-Optiken eine herausragende Leistung und ein gutes Preis-Leistungs-Verhältnis für Anwendungen mit begrenztem Platzangebot.
Mit den Zoomkameras der Z-Serie erhalten Sie auch bei der Aufnahme von Objekten unterschiedlicher Größe und Entfernung eine perfekte Auflösung.
Die Board-Level-Kameras der 37U-Serie bieten die neueste Sony-Sensortechnologie und ein kostenoptimiertes, kompaktes Design.
Entdecken Sie die Embedded-Vision-Plattformen von The Imaging Source, die Embedded-Anwendungen mit einer oder mehreren Kameras unterstützen.
Similarly, this implementation isn’t thread-safe either. Again, a thread-safe version is left as an exercise for the reader.
I'm currently spending time working on one of my open-source projects rather that writing. In the mean time, there's all my previous articles to read.
This implementation isn’t thread-safe. However, it’s fine if a program doesn’t use more than one thread. If a program does use more than one thread, a thread-safe version is possible and not that much harder, but it’s left as an exercise for the reader.
Die Board-Level-Kameras der 37U-Serie bieten die neueste Sony-Sensortechnologie und ein kostenoptimiertes, kompaktes Design.
In C++, you can alternatively use std::call_once() that’s a bit better in that you can use a lambda rather than a separate function, but you still need to declare a flag explicitly.
Identisch zu den Industriekameras der 37er Serie, so sind auch die Platinenkamera-Versionen mit STARVIS- und Pregius-Sensoren von Sony ausgestattet - den ersten Bildsensoren, die von Sony speziell für industrielle Anwendungen entwickelt wurden. Diese USB3 Vision- und GeniCam-kompatiblen Platinenkameras liefern eine exzellente Bildqualität, die für anspruchsvollste Bildverarbeitungs-Aufgaben geeignet ist. Das macht sie zu einer kostengünstigen Lösung für eine Reihe von Anwendungen wie intelligente Verkehrssysteme (ITS), optische Inspektion, Medizintechnik, Logistik und mehr. Der geringe Platzbedarf der Kameras (mit Leiterplattenabmessungen von nur 30 x 30 x 15 mm) und der symetrische Typ-C Anschluss ermöglichen eine einfache Integration auch im Fall enger Bauräume.
Die Softwareprodukte von MVTec werden in anspruchsvollen Anwendungen eingesetzt und setzen den Standard für Bildverarbeitungssoftware.