利用OpenCL对OpenCV并行化心得(2)
上文说到了没有ROI的情况下怎么优化add,现在看看有roi的情况。 ROI是opencv里面的一个特性,也可以说是图像处理库都有的特性,它的意思是对于整个一幅图像,只处理被ROI框起来的那一块,可以看做是一个mask。如果不注重性能,最简单的方法就是加上一个offse
上文说到了没有ROI的情况下怎么优化add,现在看看有roi的情况。
ROI是opencv里面的一个特性,也可以说是图像处理库都有的特性,它的意思是对于整个一幅图像,只处理被ROI框起来的那一块,可以看做是一个mask。如果不注重性能,最简单的方法就是加上一个offset即可
__kernel void matrix_add(__global uchar* src1,__global uchar* src2, __global uchar* dst, int rows, int cols,int src1_step,int src2_step,int dst_step,int src1_offset, int src2_offset, int dst_offset)
{
int x=get_global_id(0);
int y=get_global_id(1);
if(x
dst[mad24(y,dst_step,x+dst_offset)]=src1[mad24(y,src1t_step,x+src1_offset)]+src2[mad24(y,src2_step,x+src2_offset)];
}
但是在每次读4个点的时候不能这么做,因为这有对齐问题。比如一个矩阵是17列1行,ROI设置的是后16个点,起始地址就不会是4的整数倍,这样在指针强制转换的时候会出现未定义的情况,结果是错的。除此之外,长度不是4的倍数也会出现问题,所以要使用一些技巧。一个办法是可以先强制对齐地址,多读一些数据,判断是否是需要的,不是需要的就扔掉
__kernel void matrix_add (__global uchar *src1, int src1_step, int src1_offset,
__global uchar *src2, int src2_step, int src2_offset,
__global uchar *dst, int dst_step, int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x
{
x = x
#define dst_align (dst_offset & 3)
int src1_index = mad24(y, src1_step, x + src1_offset - dst_align);
int src2_index = mad24(y, src2_step, x + src2_offset - dst_align);
int dst_start = mad24(y, dst_step, dst_offset);
int dst_end = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
uchar4 src1_data = vload4(0, src1 + src1_index);
uchar4 src2_data = vload4(0, src2 + src2_index);
uchar4 dst_data = *((__global uchar4 *)(dst + dst_index));
short4 tmp = convert_short4_sat(src1_data) + convert_short4_sat(src2_data);
uchar4 tmp_data = convert_uchar4_sat(tmp);
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0
dst_data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1
dst_data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2
dst_data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3
*((__global uchar4 *)(dst + dst_index)) = dst_data;
}
}

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Utilisez la commande pip pour installer facilement le didacticiel OpenCV, qui nécessite des exemples de code spécifiques. OpenCV (OpenSource Computer Vision Library) est une bibliothèque de vision par ordinateur open source. Elle contient un grand nombre d'algorithmes et de fonctions de vision par ordinateur, qui peuvent aider les développeurs à créer rapidement des images. et applications liées au traitement vidéo. Avant d'utiliser OpenCV, nous devons d'abord l'installer. Heureusement, Python fournit un outil puissant pour gérer les bibliothèques tierces.

Comment utiliser GitLab pour la gestion des documents de projet 1. Introduction générale Dans le processus de développement logiciel, les documents de projet sont des informations très importantes. Ils peuvent non seulement aider l'équipe de développement à comprendre les besoins et la conception du projet, mais également fournir une référence à l'équipe de test. et les clients. Afin de faciliter le contrôle de version et la collaboration en équipe sur les documents de projet, nous pouvons utiliser GitLab pour la gestion des documents de projet. GitLab est un système de contrôle de version basé sur Git. En plus de prendre en charge la gestion du code, il peut également gérer les documents de projet. 2. Configuration de l'environnement GitLab Tout d'abord, je

OpenCV est une bibliothèque open source pour la vision par ordinateur et le traitement d'images, largement utilisée dans l'apprentissage automatique, la reconnaissance d'images, le traitement vidéo et d'autres domaines. Lors du développement à l'aide d'OpenCV, afin de mieux déboguer et exécuter des programmes, de nombreux développeurs choisissent d'utiliser PyCharm, un puissant environnement de développement intégré Python. Cet article fournira aux utilisateurs de PyCharm un didacticiel d'installation pour OpenCV, avec des exemples de code spécifiques. Première étape : installer Python Tout d’abord, assurez-vous que Python est installé

Le package org.opencv.imgproc de la bibliothèque JavaOpenCV contient une classe appelée Imgproc qui fournit diverses méthodes pour traiter les images d'entrée. Il fournit un ensemble de méthodes pour dessiner des formes géométriques sur des images. Pour tracer une ligne fléchée, vous devez appeler la méthode arrowedLine() de cette classe. La méthode accepte les paramètres suivants : un objet Mat représentant l'image sur laquelle la ligne doit être tracée. Un objet Point représentant deux points entre des lignes. draw. Un objet scalaire représentant la couleur de la ligne. (BGR) Un entier représentant l'épaisseur de la ligne (par défaut : 1). Exemple importorg.opencv.core.Core;importation

Comment implémenter le traitement vidéo à l'aide de PHP et de la bibliothèque OpenCV ? Résumé : Dans les applications technologiques modernes, le traitement vidéo est devenu une technologie importante. Cet article expliquera comment utiliser le langage de programmation PHP combiné à la bibliothèque OpenCV pour implémenter certaines fonctions de traitement vidéo de base et joindra des exemples de code correspondants. Mots clés : PHP, OpenCV, traitement vidéo, exemples de code Introduction : Avec le développement d'Internet et la popularité des smartphones, le contenu vidéo est devenu un élément indispensable de la vie des gens. Cependant, pour réaliser le montage vidéo et

La vision par ordinateur (Computer Vision) est l'une des branches importantes dans le domaine de l'intelligence artificielle. Elle permet aux ordinateurs de percevoir et de comprendre automatiquement des signaux visuels tels que des images et des vidéos, et de réaliser des scénarios d'application tels que l'interaction homme-machine et le contrôle automatisé. OpenCV (OpenSourceComputerVisionLibrary) est une bibliothèque de vision par ordinateur open source populaire largement utilisée dans la vision par ordinateur, l'apprentissage automatique, l'apprentissage profond et d'autres domaines. Cet article explique comment utiliser

Techniques et solutions courantes d'optimisation des performances et de refactorisation de code en C# Introduction : Dans le processus de développement logiciel, l'optimisation des performances et la refactorisation de code sont des liens importants qui ne peuvent être ignorés. Surtout lors du développement de grandes applications à l'aide de C#, l'optimisation et la refactorisation du code peuvent améliorer les performances et la maintenabilité de l'application. Cet article présentera quelques techniques courantes d’optimisation des performances et de refactorisation du code C#, et fournira les solutions correspondantes et des exemples de code spécifiques. 1. Compétences en matière d'optimisation des performances : choisissez le type de collection approprié : C# fournit une variété de types de collections, tels que List, Dict

Comment obtenir une netteté d'image à l'aide de la bibliothèque PHP et OpenCV ? Présentation : La netteté de l'image est une technique de traitement d'image courante utilisée pour améliorer la clarté et la force des bords d'une image. Dans cet article, nous expliquerons comment implémenter la netteté d'image à l'aide de PHP et de la bibliothèque OpenCV. OpenCV est une puissante bibliothèque de vision par ordinateur open source qui fournit de riches fonctions de traitement d'image. Nous utiliserons l'extension PHP d'OpenCV pour implémenter l'algorithme de netteté de l'image. Étape 1 : Installer les extensions OpenCV et PHP Tout d'abord, nous avons besoin
