我正在尝试使用C,Lua和OpenCv,但是我在使用OpenCv方法时遇到了问题。
首先,我想将灰度应用于图像。我正在尝试:
static int treatments_grayscale (lua_State * L) {
void *ptr;
ptr=lua_touserdata(L,1);
int w,h;
w=lua_tointeger(L,2);
h=lua_tointeger(L,3);
cv::Mat * img=new cv::Mat(w,h,CV_8UC4,ptr);
cvCvtColor(img,img,CV_RGB2GRAY);
// Return image
lua_pushlstring(L,(char *)img->data,w*h*4);
return 1;
}
运行此代码时,出现以下错误:
“函数cvarrToMat中的未知数组类型”
我究竟做错了什么?
我也这样尝试过:
cv::Mat * img=new cv::Mat(w,h,CV_8UC4,ptr);
IplImage * dst_img= cvCreateImage(cvSize(w,h), IPL_DEPTH_8U, 4);
dst_img->imageData = (char *) img->data;
cvCvtColor(dst_img,dst_img,CV_RGB2GRAY);
然后...错误:
“错误:(-215)dst.data == dst0.data在函数cvCvtColor中”
谢谢!=)
我认为存在错误,因为源图像的大小不应与目标图像的大小相同。当我将rgb图像转换为灰色时,我使用类似的方法:
IplImage * cvImage = cvCreateImage(cvSize(width, height), IPL_DEPTH_8U, 3);
IplImage * cvGray = cvCreateImage(cvSize(width, height), IPL_DEPTH_8U, 1);
cvImage->imageData = (char *) img->data;
cvCvtColor(cvImage, cvGray, CV_RGB2GRAY);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句