Это может быть неправильный способ, но я передаю массив из LabView в свою функцию C ++ как простой массив char. Затем я создаю изображение OpenCV и указываю указатель на мои данные, которые были переданы. В конце функции я использую cvReleaseImage для удаления всех изображений OpenCV, это удалит данные из моего исходного указателя?
также, есть ли лучший способ выполнить операцию на месте, которая изменяет исходное изображение?
EXPORT void smoothImg(uchar * the_img, int size_x, int size_y)
{
CvSize size;
size.height = size_y ;
size.width = size_x;
IplImage * img1 = cvCreateImageHeader(size, IPL_DEPTH_8U, 1);
img1->imageData = (char *)the_img;
img1->imageDataOrigin = img1->imageData;
IplImage * img2 = cvCreateImage(size, IPL_DEPTH_8U, 1);
// this is because I want my end result to be in img1 (same data as my the_img
memcpy(img2->imageData,img1->imageData,sizeof(char)*size_x*size_y);
cvSmooth(img2,img1,CV_BLUR, 5,5);
cvReleaseImage(&img1 );
cvReleaseImage(&img2 );
}
Примечание: кажется, что это не влияет на мои изображения, так как результаты правильные, но я хочу убедиться, что это правильно, прежде чем поместить его повсюду
Спасибо!