非 void 関数をスレッドで実行する関数として使用するにはどうすればよいですか。
つまり、次のような関数です。
void example(Mat& in, Mat& out)
この関数をスレッドに使用するにはどうすればよいbeginthreadx
ですか?
マルチスレッド コードで変換するコードを貼り付けます。
#include <opencv\cv.h>
#include <opencv\highgui.h>
#include <stdio.h>
#include <windows.h>
#include <process.h>
using namespace std;
using namespace cv;
//filling array
void acquisisci (Mat in[]){
in[0]=imread("C:/OPENCV/Test/imgtest/bird1.jpg",1);
in[1]=imread("C:/OPENCV/Test/imgtest/bird2.jpg",1);
in[2]=imread("C:/OPENCV/Test/imgtest/bird3.jpg",1);
in[3]=imread("C:/OPENCV/Test/imgtest/pig1.jpg",1);
in[4]=imread("C:/OPENCV/Test/imgtest/pig2.jpg",1);
in[5]=imread("C:/OPENCV/Test/imgtest/pig3.jpg",1);
}
//grey function
void elabora (Mat& in, Mat& out){
if (in.channels()==3){
cvtColor(in,out,CV_BGR2GRAY); //passa al grigio
}
}
//threshold function
void sogliata(Mat& in, Mat& out){
threshold(in,out,128,255,THRESH_BINARY);//fa la soglia
}
//view
void view (Mat& o){
imshow("Immagine",o);
waitKey(600);
}
int main(){
Mat in[6],ou[6],out[6];
acquisisci(in);
for (int i=0;i<=5;i++){
elabora(in[i],ou[i]);
}
for (int i=0;i<=5;i++){
sogliata(ou[i],out[i]);
}
for (int i=0;i<=5;i++){
view(out[i]);
}
return 0;
}
並列スレッドでこれを行うことはできますか??