2
我有一個PNG圖像pic.png
,我使它透明通過使用下面的函數createMask()
斷言失敗(src.type()== dst.type())在OpenCV中
origpic = cvLoadImage("/root/opencv/newtutorial/newcode_try2/pic.png",1);
pic = createMask(origpic);
我有createMask功能
IplImage* createMask(IplImage* image) {
IplImage *mask;
mask = cvCreateImage(cvGetSize(image), 8, 1);
cvInRangeS(image, cvScalar(255.0, 255.0, 255.0), cvScalar(255.0, 255.0, 255.0), mask);
cvNot(mask, mask);
return mask;
}
現在我的問題是,當我與
cvWarpPerspective(pic, neg_img, warp_matrix);
我收到此錯誤
OpenCV Error: Assertion failed (src.type() == dst.type()) in cvWarpPerspective,
file /root/OpenCV-2.3.1/modules/imgproc/src/imgwarp.cpp, line 3234
terminate called after throwing an instance of 'cv::Exception'
what(): /root/OpenCV-2.3.1/modules/imgproc/src/imgwarp.cpp:3234:
error: (-215) src.type() == dst.type() in function cvWarpPerspective
對不起,我得到這個錯誤OpenCV錯誤:輸入參數的大小不匹配(該操作既不是'數組操作數組'(其中數組具有相同的大小和類型),也不是'數組操作標量',也不是'標量op array')in binary_op,file /root/OpenCV-2.3.1/modules/core/src/arithm.cpp – Wazzzy
這是因爲您嘗試檢查具有3通道標量間隔的單通道圖像的範圍。我無法猜測你爲什麼在那裏實際使用那個呼叫,沒有這一行,代碼將是相同的。 – Sam
哦,我明白了。您必須將圖像轉換爲灰度(cvCvtColor()),並將結果發送到checkrange。你有什麼是3通道圖像,檢查範圍,並試圖存儲在1通道圖像的結果。錯誤! – Sam