如何加载多个图像以使用 opencv 进行处理?
Posted
技术标签:
【中文标题】如何加载多个图像以使用 opencv 进行处理?【英文标题】:How to load multiple images for processing with opencv? 【发布时间】:2013-11-30 03:54:56 【问题描述】:我有一个 OpenCV C++ 代码,我必须应用到二十个或更多图像。现在我在一个一个调试,每次都改个镜像的名字。有没有一种方法可以让我调用所有图像并将它们提交到该进程并保存所有图像?
我正在使用这个:
Mat input_image = imread("img1.jpg");
用于加载图像。还有这个:
imwrite("output_image.jpg", output_image);
用于将图像保存在我的项目文件夹中。
更新:
我这样做了,但没有用:
int main(int argc, char **argv)
char name[50];
int i=0;
Mat output_image;
while(1)
sprintf(name, "cam%d.jpg", i);
//Load the image
Mat input_image = imread(name, 1);
if(!input_image.data) break;
//Image RGB to Grayscale
cvtColor(input_image, output_image, CV_RGB2GRAY);
//Applying Gaussian
GaussianBlur(output_image, output_image, Size(21.0, 21.0), 50.0);
//applying adaptive threshold
adaptiveThreshold(output_image, output_image, 255, ADAPTIVE_THRESH_MEAN_C, THRESH_BINARY_INV, 111, -20);
sprintf(name,"cam%d-bin.jpg",i);
//save the image
imwrite(name, output_image);
i++;
【问题讨论】:
你可以循环执行.. 你试过我写的吗? 【参考方案1】:你可以试试下面的代码。假设您的图像名称如 img0.jpg、img1.jpg、img2.jpg 等...
char name[10];
int i=0;
Mat gray;
while(1)
sprintf(name,"img%d.jpg",i);
Mat src= imread(name,1);
if(!src.data ) break;
cvtColor(src,gray,CV_BGR2GRAY);
sprintf(name,"gray%d.jpg",i);
imwrite(name, gray);
imshow("src",src);
imshow("result",gray);
i++;
waitKey();
【讨论】:
请检查我的更新。我试过你说的,但没有用。我做错了什么? 你确定图片在当前目录吗?【参考方案2】:试试这个,
const char* DATASET("D:/Data/input_image_directory/");
const int total_images = 20;
int main(int argc, char** argv)
std::string file_directory;
int count;
if (argc > 1)
file_directory = argv[1];
count = argv[2];
else
file_directory = DATASET->c_str();
count = total_images;
for (int i=0; i<count; ++i)
// This is assuming your file names are in the structure image000.png, image001.png,...
cv::Mat input_Mat = cv::imread( cv::format( "%s/image%03d.png", file_directory, i ), CV_LOAD_IMAGE_ANYCOLOR );
cv::namedWindow ("input_image", CV_WINDOW_AUTOSIZE);
cv::imshow( "input_image", input_Mat);
// Do processing
// Some more processing
return EXIT_SUCCESS;
【讨论】:
以上是关于如何加载多个图像以使用 opencv 进行处理?的主要内容,如果未能解决你的问题,请参考以下文章