JavaCV将3 channel IplImage转换为4 channel IplImage

标签 java opencv javacv

我尝试了一些方法从 3 channel IplImage 创建新的 4 channel IplImage。我尝试将此代码从 C 转换为 JavaCV:

CvMat * src; // your source image
CvMat * dst // your destination image
CvMat * zeros = cvCreateMat(src->cols, src->rows, CV_8UC1);
cvSet(zeros, cvScalar(0, 0, 0, 0));
CvArr * input[] = { src, zeros };
int from_to[] = { 0,0, 1,1, 2,2, 3,3 };
cvMixChannels(input, 2, &dst, 1, from_to, 4);

取自 here ,我的转换是:

    CvMat src; 
    CvMat dst;
    CvMat zeros = cvCreateMat(src.cols(), src.rows(), CV_8UC1);
    cvSet(zeros, cvScalar(0, 0, 0, 0));
    CvArr input[] = { src, zeros };
    int from_to[] = { 0,0, 1,1, 2,2, 3,3 };
    cvMixChannels(input, 2, dst, 1, from_to, 4);

但是eclipse说,JavaCV混合 channel 方法是这样的:

The method cvMixChannels(opencv_core.CvArr[], int, opencv_core.CvArr[], int, int[],int) in the type opencv_core is not applicable for the arguments opencv_core.CvArr[], int, opencv_core.CvMat, int, int[], int)

有人可以帮助我吗?

谢谢

最佳答案

您的错误是您将 CvMat 作为第一个和第三个参数传递给 cvMixChannels,而您应该传递 CvMat[]

关于JavaCV将3 channel IplImage转换为4 channel IplImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19914893/

相关文章:

java:8 个皇后使用深度优先搜索

java - 从 java ProcessBuilder 启动 Matlab,Matlab 控制台不会出现在 Mac OS 10.8 中

python - 将NumPy图片发送到 channel 而不用discord.py保存

android - Bytedeco的Tesseract库是通过gradle依赖添加的,但是没有找到

java - DataDog api - 发送堆栈跟踪

Java 如果我们将两个对象分配给同一个变量会发生什么

java - 使用 OpenCV 进行边缘检测 (Canny)

opencv - 寻找拥有 GOCV 的人

对网络摄像头的视频进行图像处理操作时出现 java.lang.OutOfMemory 错误

opencv - javacv 错误(是否调用了 setFormat()?)_