1

我正在使用 opencv 和 qt 库使用 Visual C++ 编写代码。我正在尝试将阈值应用于 iplImage 并显示它,但我遇到了一些问题:当我将 iplImage 传递给 cvThreshold 函数时(假设阈值为 0)不返回白色图像并且我不知道为什么。要显示我正在使用的函数发出:

uchar *qimout=new uchar[sImg];
            IplImage *greyImage=cvCreateImage(cvSize(wImg,hImg),IPL_DEPTH_8U,1);
            cvThreshold(currentImage,greyImage,0,255,cv::THRESH_BINARY);
            greyImage->imageData = (char*)qimout;
            emit renderImage(QImage(qimout,wImg,hImg,QImage::Format_Indexed8));

有人能帮我吗?提前致谢。

4

1 回答 1

0

我认为这与这篇文章 在 OpenCV 中将 RGB 转换为黑白有关

     // C
        IplImage *im_rgb  = cvLoadImage("image.jpg");
        IplImage *im_gray = cvCreateImage(cvGetSize(im_rgb),IPL_DEPTH_8U,1);
        cvCvtColor(im_rgb,im_gray,CV_RGB2GRAY);

        // C++
        Mat im_rgb  = imread("image.jpg");
        Mat im_gray;
        cvtColor(im_rgb,im_gray,CV_RGB2GRAY);
        // C
IplImage* im_bw = cvCreateImage(cvGetSize(im_gray),IPL_DEPTH_8U,1);
cvThreshold(im_gray, im_bw, 128, 255, CV_THRESH_BINARY | CV_THRESH_OTSU);

// C++
Mat img_bw = im_gray > 128;
于 2012-12-10T13:38:18.557 回答