在opencv中写入图像时出现空指针异常
Null pointer Exception when write a image in opencv
我尝试在 opencv 2.4.10 中裁剪图像 java。
我的代码
我的 java class 名字是 FaceDetector
Mat srcImg= Highgui.imread("china.jpg"),dstImg=null;
Rect rect = new Rect( x, y, width, height );
srcImg(rect).copyTo(dstImg);
Highgui.imwrite("screen.jpg", dstImg);
错误是
srcImg(rect) 未定义类型 FaceDetector
空指针异常在//srcImg(rect).copyTo(dstImg);
帮助解决这个错误
谢谢
1) img(Rect) 在c++中有效,但在java中你需要:
img.submat(Rect)
1a) 在这样做之前,请查看所需的 Rect 是否完全适合您的 img,
将其剪辑到 img 边界 else(是的,这发生了,例如 FaceDetection 最终将 return 越界 Rects !):
Rect r;
int ox = (r.x + r.width) - img.cols() - 1;
if ( ox > 0 ) r.width -= ox;
int oy = (r.y + r.height) - img.rows() - 1;
if ( oy > 0 ) r.width -= ox;
2) copyTo() 需要一个有效的目标(足够大的图像)。因为无论如何您都想将它分配给新图像,请使用
Mat dstImg = srcImg.submat(Rect).clone();
3) 每当您加载资源时,检查结果!
Mat srcImg= Highgui.imread("china.jpg");
if ( srcImg.empty() )
// baah
找了半天终于解决了
Mat crop=new Mat();
crop=srcImg.submat(x,width,y,height);
Highgui.imwrite("screen3.jpg", crop);
现在我检测到的脸被清晰地裁剪了。
我尝试在 opencv 2.4.10 中裁剪图像 java。
我的代码
我的 java class 名字是 FaceDetector
Mat srcImg= Highgui.imread("china.jpg"),dstImg=null;
Rect rect = new Rect( x, y, width, height );
srcImg(rect).copyTo(dstImg);
Highgui.imwrite("screen.jpg", dstImg);
错误是
srcImg(rect) 未定义类型 FaceDetector
空指针异常在//srcImg(rect).copyTo(dstImg);
帮助解决这个错误
谢谢
1) img(Rect) 在c++中有效,但在java中你需要:
img.submat(Rect)
1a) 在这样做之前,请查看所需的 Rect 是否完全适合您的 img, 将其剪辑到 img 边界 else(是的,这发生了,例如 FaceDetection 最终将 return 越界 Rects !):
Rect r;
int ox = (r.x + r.width) - img.cols() - 1;
if ( ox > 0 ) r.width -= ox;
int oy = (r.y + r.height) - img.rows() - 1;
if ( oy > 0 ) r.width -= ox;
2) copyTo() 需要一个有效的目标(足够大的图像)。因为无论如何您都想将它分配给新图像,请使用
Mat dstImg = srcImg.submat(Rect).clone();
3) 每当您加载资源时,检查结果!
Mat srcImg= Highgui.imread("china.jpg");
if ( srcImg.empty() )
// baah
找了半天终于解决了
Mat crop=new Mat();
crop=srcImg.submat(x,width,y,height);
Highgui.imwrite("screen3.jpg", crop);
现在我检测到的脸被清晰地裁剪了。