我在C中使用opencv作为我的项目,我需要模糊图像。
这是我到目前为止所尝试的:
/*
Function displays the blurred image of the frame
Input: frame
Output: none
*/
void blurImage(link_t* frame)
{
IplImage* imageSrc = cvLoadImage(frame->frame->path, 1); // frame->frame->path is the path of the image
int i = 0;
if (!imageSrc)//The image is empty.
{
printf("could not open or find image");
}
else
{
for (i = 1; i < 51; i += 2)
{
blur(imageSrc, imageSrc, Size(i, i)); // Not compiling - LNK error
}
cvShowImage("Display window", imageSrc); //display the blurred image
}
}
我在网上看过很多关于这一点的内容以及我发现的所有答案都是在c ++ / python中,所以他们没有帮助我。
答案 0 :(得分:0)
由于C中不存在blur()(仅在C ++或Python中),我使用了cvPyrDown
和cvPyrUp
。
使用向下功能然后向上移动图像会产生模糊效果(比如缩小图像大小会缩小分辨率,然后将其调整为正常)。
如何使用cvPyrDown here。
代码:
void blurImage(void)
{
IplImage* imageSrc = cvLoadImage("<Image path>", 1);
IplImage* imageDst;
if (!imageSrc)//The image is empty.
{
printf("could not open or find image");
}
else
{
imageDst = cvCreateImage(cvSize(imageSrc->width/2,imageSrc->height/2), imageSrc->depth, imageSrc->nChannels);
cvPyrDown(imageSrc, imageDst, CV_GAUSSIAN_5x5); //Down size
cvPyrUp(imageDst, imageSrc, CV_GAUSSIAN_5x5); // Up size
cvShowImage("Display window", imageSrc); // Display the blurred image
cvWaitKey(1000); // Wait for 1000 milliseconds
cvReleaseImage(&imageDst);
cvReleaseImage(&imageSrc);
}
}