Machine Vision

cancel
Showing results for 
Search instead for 
Did you mean: 

How do I return multiple images from OpenCV to LabView?

I know how to pass one image from OpenCV to LabView. I have a FOR loop in OpenCV that generates multiple images. How do I pass those images back to LabView?

 

See my code below?

 

MedianFilter.cpp code (DLL source code):

#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2\highgui\highgui.hpp>
#include<sstream>
#include <iostream>

using namespace std;
using namespace cv;

// extern C
extern "C" {

	_declspec (dllexport) void MedianFilter(unsigned char *imageIN, int rows, int cols, int kernel_size, unsigned char *imageOUT, int i);
}



_declspec (dllexport) void MedianFilter(unsigned char *imageIN,
	int rows,
	int cols,
	int kernel_size,
	unsigned char *imageOUT,
	int i)
{
	Mat image_input(rows, cols, CV_8U, &imageIN[0]); // THIS IS THE INPUT IMAGE, POINTER TO DATA
	
	//imshow("STAGE 1: Original Image", image_input);
	Mat dst, draw;
	char zBuffer[55];

	stringstream ss;
	string name = "MedianFilteredImage";
	string type = ".jpg";

	Mat image_output(rows, cols, CV_8U, &imageOUT[0]); // THIS IS THE OUTPUT IMAGE, POINTER TO DATA

	for (i = 1; i<23; i = i + 2)
	{
		//copy the text to the "zBuffer"
		_snprintf_s(zBuffer, 55, "Kernel Size : %d x %d", i, i);

		//Median smoothing
		medianBlur(image_input, image_output, i);

		//put the text in the "zBuffer" to the "dst" image
		putText(image_output, zBuffer, Point(image_input.cols / 4, image_input.rows / 8), CV_FONT_HERSHEY_COMPLEX, 1, Scalar(255, 255, 255), 2);

		//Save filtered image(i)

		ss << name << (i) << type;
		string filename = ss.str();
		ss.str("");
		/*imwrite(filename, image_output);*/


		//char file_name[100];
		//sprintf(file_name, "medianFilteredImages/MedianFilteredImage%d.jpg", i);
		//imwrite(file_name, image_output);
		//imwrite("medianFilteredImages/zBuffer.jpg", image_output);

		//show the blurred image with the text
		imshow("STAGE 1: Median filtered Image", image_output);
		bool bSuccess = imwrite("../OpenCV_saved_images/OpenCV_saved_images.jpg", image_output);
		if (!bSuccess)

		{
			string mystr;
			float price = 0;
			int quantity = 0;

			cout << "Enter price: ";
			getline(cin, mystr);
			stringstream(mystr) >> price;
			cout << "Enter quantity: ";
			getline(cin, mystr);
			stringstream(mystr) >> quantity;
			cout << "Total price: " << price*quantity << endl;


			cout << "ERROR : Failed to save the image" << endl;
			//putText();
			//sprintf("%b , ERROR : Failed to save the image", bSuccess.toString());
			//system("pause"); //wait for a key press

		}
		//wait for 2 seconds
		waitKey(1000);
	}
}

 

Download All
0 Kudos
Message 1 of 3
(3,563 Views)
why you want generate multiple image with for loon inside opencv loop
why you do not use for loop in labview and run your dll inside it to make multiple image
0 Kudos
Message 2 of 3
(3,539 Views)

I apologize for the late response. I am only seeing that thread now. NI recently released a set of VIs to easily integrate LabVIEW and Vision Development Module with OpenCV. You can download them at this link:

https://www.ni.com/en/support/downloads/tools-network/download.vision-opencv-utilities.html

They contain examples to easily get started.

 

Hope this helps.

 

Christophe

0 Kudos
Message 3 of 3
(3,429 Views)