HSV 色空間で 3 チャネルのマトリックスを反復処理する必要がありますが、非常に遅いです。約2.5秒かかります。
cv::Mat img = cv::imread( "image.jpg" );
cv::Mat img32FC3;
img.convertTo( img32FC3, CV_32FC3 );
cv::cvtColor( img32FC3, img32FC3, CV_BGR2HSV );
int height = img32FC3.rows;
int width = img32FC3.cols;
cv::Size size = img32FC3.size();
if( img32FC3.isContinuous() ) {
size.width *= size.height;
size.height = 1;
}
size.width *= 3;
for( int i = 0; i < size.height; i ++ ) {
float* ptr = img32FC3.ptr<float>(i);
for( int j = 0; j < size.width; j += 3 ) {
h = (ptr[ j ]);
s = (ptr[j +1 ]);
v = (ptr[j +2 ]);
}
}
cv::cvtColor( img32FC3, img32FC3, CV_HSV2BGR );
img32FC3.convertTo( img, CV_8UC3 );
imwrite("test.jpg", img );
上記のコードは、openCV のドキュメントから改作されており、パフォーマンスが優れていると記載されています。2.5秒は本当に非常に遅いので、どうすればこれをスピードアップできるのでしょうか:(。
ところで: 画像は 3744x5616 ピクセルです