小编kar*_*lip的帖子

CUDA中的全局变量

如何在CUDA中创建全局变量?你能举个例子吗?

例如,如何在CUDA函数内创建数组

__global__ void test()
{
  int *a = new int[10];
}
Run Code Online (Sandbox Code Playgroud)

或者如何创建全局数组并从此函数访问它.例如

__device__ int *a;
__global__ void test()
{
  a[0] = 2;
}
Run Code Online (Sandbox Code Playgroud)

或者我如何使用如下...

__global__ void ProcessData(int img)
{
   int *neighborhood = new int[8]; 
   getNeighbourhood(img, neighbourhood);
}
Run Code Online (Sandbox Code Playgroud)

我还有一些问题.我发现比较

__device__
Run Code Online (Sandbox Code Playgroud)

如果我定义

"__device__ __constant__" (read only)
Run Code Online (Sandbox Code Playgroud)

将改善内存访问.但我的问题是我在主机内存中有一个数组说

 float *arr = new float[sizeOfTheArray]; 
Run Code Online (Sandbox Code Playgroud)

我想把它作为设备中的变量数组,我需要在设备内存中修改它,我需要将其复制回主机.我该怎么做??

cuda

7
推荐指数
1
解决办法
3万
查看次数

调用模板CUDA内核时出现问题

我一直在尝试创建模板内核,但是在我的程序中调用它们时遇到了一些麻烦.我有一个Matrix<T>模板类,并在其中定义了一些方法

Matrix.h:

template <typename T> class Matrix {
    ...
    void sum(Matrix<T>& m1, Matrix<T>& m2, Matrix<T>& sum);
    ...
}

#include "Matrix.cu"
Run Code Online (Sandbox Code Playgroud)

Matrix.cu:

#include "MatrixKernel.h"

template<typename T> void Matrix<T>::sum(const Matrix<T>& m, Matrix<T>& sum) {
    ...
    sumKernel<T><<<dimGrid, dimBlock>>>(Matrix<T> m1, Matrix<T> m2, Matrix<T> sum)
    ...
}
Run Code Online (Sandbox Code Playgroud)

MatrixKernel.h:

template<typename T> __global__ void sumKernel(const Matrix<T> m1, const Matrix<T> m2, Matrix<T> sum) {
...
}
Run Code Online (Sandbox Code Playgroud)

问题是,当我从sum中调用sumKernel时,编译器会给我以下错误:

error C2059: syntax error : '<'
Run Code Online (Sandbox Code Playgroud)

有人知道发生了什么吗?在我包含sumKernel调用之前,代码编译得很好.

谢谢.

c++ templates cuda

7
推荐指数
1
解决办法
9616
查看次数

OpenCV在图像上运行kmeans算法

我试图在3通道彩色图像上运行kmeans,但每次我尝试运行该功能时,它似乎崩溃,出现以下错误:

OpenCV Error: Assertion failed (data.dims <= 2 && type == CV_32F && K > 0) in unknown function, file ..\..\..\OpenCV-2.3.0\modules\core\src\matrix.cpp, line 2271
Run Code Online (Sandbox Code Playgroud)

我已经在下面添加了一些代码,以帮助指定传入的内容.非常感谢任何帮助.

// Load in an image
// Depth: 8, Channels: 3
IplImage* iplImage = cvLoadImage("C:/TestImages/rainbox_box.jpg");

// Create a matrix to the image
cv::Mat mImage = cv::Mat(iplImage);

// Create a single channel image to create our labels needed
IplImage* iplLabels = cvCreateImage(cvGetSize(iplImage), iplImage->depth, 1);

// Convert the image to grayscale
cvCvtColor(iplImage, iplLabels, CV_RGB2GRAY);

// Create the matrix for …
Run Code Online (Sandbox Code Playgroud)

c c++ opencv image-processing k-means

7
推荐指数
1
解决办法
1万
查看次数

读取由anchors.fill:parent定义的QML元素大小

我正在编写一个QML扩展插件,我正在寻找一种方法来访问我刚刚实现的元素的大小.

现在,新元素(命名CustomElement)可以通过定义用户想要的任何大小来创建它的宽度高度值,因此在用户可以执行的QML文件中:

CustomElement 
{
     id: my_elem
     width: 800
     height: 600
}
Run Code Online (Sandbox Code Playgroud)

但是我希望能够在用户通过a配置大小时检索大小信息anchor,如下所示:

Rectangle
{
    width: 800
    height: 600

    CustomElement 
    {
        id: my_elem
        anchors.fill: parent
    }
}
Run Code Online (Sandbox Code Playgroud)

我不知道如何访问anchors信息.

插件类定义为:

class CustomElement: public QDeclarativeItem
{
    Q_OBJECT
    //Q_PROPERTY() stuff
public:
    // ...
};
Run Code Online (Sandbox Code Playgroud)

在插件的构造函数中,我设置QGraphicsItem::ItemHasNoContents为false:

CustomElement::CustomElement(QDeclarativeItem* parent)
: QDeclarativeItem(parent)
{
    qDebug() << "CustomElement::CustomElement parent is:" << parent;

    setFlag(QGraphicsItem::ItemHasNoContents, false);
}
Run Code Online (Sandbox Code Playgroud)

加入调试后,我注意到,parent就是0,这也解释了为什么我不能与获取有用的信息boundingRect()和其他方法.显然,问题是我的插件没有父母.我该如何解决这个问题?

c++ plugins qt qml

7
推荐指数
1
解决办法
3328
查看次数

如何在Visual Studio 2010中使用GStreamer?

我是否必须自己编译GStreamer?我可以使用Visual Studio 2010吗?

我正在努力找到一个很好的分步指南,说明如何做到这一点.有一个好的吗?

我的目标是在VS2010上使用QtGstreamer构建应用程序.

c++ visual-studio-2010 gstreamer qtgstreamer

7
推荐指数
1
解决办法
5941
查看次数

如何使用OpenCV从图像中消除径向扭曲?

我想我应该cv::remap用来消除失真,但无法弄清楚const Mat& map1, const Mat& map2应该是什么地图来实现这一点.

我应该使用它cv::initUndistortRectifyMap来找出价值观吗?如果是这样,我真的很感激一个例子.我没有固有的相机参数或不知道如何计算它们.谢谢.

c++ opencv image-processing radial distortion

7
推荐指数
1
解决办法
2万
查看次数

如何检查opencv窗口是否已关闭

如何检查opencv窗口是否已关闭?

我想要做:

cvNamedWindow("main", 1);

while(!cvWindowIsClosed("main"))
{
    cvShowImage("main", myImage);   
}
Run Code Online (Sandbox Code Playgroud)

但这些没有这样的cvWindowIsClosed(...)函数!

c c++ opencv

7
推荐指数
1
解决办法
6781
查看次数

如何记录基于Qt的源代码

如何记录我正在编写的源代码,以便其他开发人员在将光标悬停时查看帮助说明 - 例如 - 我在Qt creator中创建的类名.我想做一些像将光标放在Qt类或函数名称上的帮助.

c++ qt qt-creator

7
推荐指数
2
解决办法
1733
查看次数

OpenCV:使用霍夫圆变换来检测虹膜

我是openCV的新手,但我想创建虹膜识别程序.虽然带网络摄像头的系统可以检测到眼睛,但是它不能检测到圆形虹膜.我正在使用Hough Circle Transformation.但是如果图像中的光圈不够圆,系统就无法检测到它.有什么解决方案吗?

使用的算法是霍夫圆变换.

IplImage *capturedImg = cvLoadImage("circle.jpg",1);
IplImage *grayscaleImg = cvCreateImage(cvGetSize(capturedImg), 8, 1);

cvCvtColor(capturedImg, grayscaleImg, CV_BGR2GRAY);

// Gaussian filter for less noise
cvSmooth(grayscaleImg, grayscaleImg, CV_GAUSSIAN,9, 9 );

//Detect the circles in the image
CvSeq* circles = cvHoughCircles(grayscaleImg,
                         storage,
                         CV_HOUGH_GRADIENT,
                         2,
                         grayscaleImg->height/4,
                         200,
                     100 );

for (i = 0; i < circles->total; i++) 
{
     float* p = (float*)cvGetSeqElem( circles, i );
     cvCircle( capturedImg, cvPoint(cvRound(p[0]),cvRound(p[1])), 
        3, CV_RGB(0,255,0), -1, 8, 0 );
     cvCircle( capturedImg, cvPoint(cvRound(p[0]),cvRound(p[1])), 
         cvRound(p[2]), CV_RGB(0,0,255), 3, 8, 0 );
} …
Run Code Online (Sandbox Code Playgroud)

c++ opencv image-processing hough-transform iris-recognition

7
推荐指数
1
解决办法
1万
查看次数

OpenCV在视频中查找图片(帧)

我试图用C++创建一个小应用程序,它将返回概率值(实数从0到1),用于识别视频中的两个图片.我的想法是在某些视频材料中找到商业广告.我想从商业和最后一个切割第一帧.通过这种方式,我可以创建应用程序,使用OpenCV,将加载视频(电视内容),然后它将搜索从商业广告中捕获的第一帧.如果它找到它(概率超过SOME_PARAMETER),那么应用程序可以得出结论广告从那里开始.然后我想搜索最后一帧,如果找到它(再次概率超过SOME_PARAMETER),应用程序可以得出结论,在给定视频中真正存在商业广告.这只是一个想法.我是C++方面的专家,但对OpenCV来说却是新手.如果有人可以指出我,或举一个例子,将非常感激.当然,我对任何有关想法的建议持开放态度.谢谢,

M.

c c++ video opencv image-processing

7
推荐指数
1
解决办法
6666
查看次数