C++ 인터페이스를 통해 opencv를 사용하고 있습니다. 하나의 채널 이미지를 얻으려는 멀티 채널 이미지를 나타내는 cv::Mat m1
이 있습니다. m2
픽셀은 m1
(해당 픽셀의 값은 여러 값을 갖는데 하나는 하나의 값임)에있는 해당 픽셀의 모든 값 중에서 최대 값을가집니다. 각 채널). 누구든지 m1
에서 m2
을 얻는 가장 효율적인 방법을 알고 있습니까?멀티 채널에서 최대 단일 채널 cv :: Mat cv :: Mat
답변
당신은 cv::reduce()
및 Mat::reshape()
를 사용하여이 작업을 수행 할 수 있습니다. 핵심은 행의 각 요소가 하나의 색상 구성 요소를 나타내는 단일 채널 이미지로 m1
을 재구성하는 것입니다. m1.reshape(1, m1.total())
을 통해이 작업을 수행 할 수 있습니다. 그런 다음 reduce()
을 적용하면 최대 구성 요소 값을 포함하는 Mat
이 표시되고 그 결과를 다시 모양을 바꾸어 모양이 m1
이되는 간단한 문제가됩니다. 간단한 예는 다음과 같습니다
uchar data[] = {1,2,3, 3,1,2, 2,1,3, 3,2,1};
cv::Mat m1(2,2, CV_8UC3, data); // Maximum component value is 3 for all pixels
cv::Mat m2;
cv::reduce(m1.reshape(1, m1.total()), m2, 1, CV_REDUCE_MAX);
m2 = m2.reshape(0, m1.cols); // 2x2 Mat, all elements are 3
나는 당신의 대답에 동의하고 그것을 제 문제에 적용 할 수 있습니다.하지만 OpenCV 문서에 따르면 m.IsContinuous()가 true를 반환 할 때만 m.reshape (x, y)를 적용 할 수 있습니다. 그 상황에서 어떤 대답? –
나만의 솔루션을 작성 하시겠습니까? 해결하기가 어렵지 않습니다. – Aurelius
- 1. cv :: Mat aaa();의 차이점 및 cv :: Mat aaa = cv :: Mat();
- 2. opencv에서 cv :: Mat
- 3. 윤곽선에서 cv :: Mat
- 4. opencv cv :: mat allocation
- 5. cv :: Mat detect PixelFormat
- 6. 인쇄 cv :: Mat opencv
- 7. cv :: imwrite는 CV_32FC4를 저장하지 않습니다. cv :: Mat
- 8. a가 cv :: Mat이고 cv :: Mat b = a.row (1)이면 두 개의 cv :: Mat 인스턴스의 차이점은 무엇입니까?
- 9. std :: vector of cv :: Mat
- 10. cv :: Mat :: zeros 초기화 문제
- 11. OpenCV cv :: Mat set if
- 12. cv :: Mat to QImage conversion
- 13. OpenCV cv :: 멀티 채널 행렬에 'ones ones'?
- 14. cvLoadImage for IplImage cv :: mat for cv :: mat does not workign
- 15. cv :: Mat to QImage 및 뒤로
- 16. cv :: Mat와 arma :: mat 사이의 변환
- 17. const 데이터 용 cv :: Mat 헤더 만들기
- 18. cv :: Mat 요소와 함께 추가 정보 저장
- 19. cv : Mat references를 넘길 때의 malloc 오류
- 20. cv :: Mat 데이터에 액세스하기위한 OpenCV 오류
- 21. opencv 이진 데이터 jpg 이미지를 cv :: Mat
- 22. cv :: mat 메모리 할당 및 해제 메모리
- 23. cv :: mat type을 CV_16UC1에서 CV_8UC1로 변환하는 방법
- 24. 메모리를 공개하지 않고 free cv :: Mat
- 25. 불완전 유형 "cv :: Mat"opencv C++
- 26. cv :: MAT 이미지를 CVD :: Image로 변환합니다.
- 27. cv :: matwise 매트릭스의 cv :: bitwise_not
- 28. Cv :: Mat에 Yuyv (YCrCb)를 저장하는 Opencv Mat
- 29. OpenCV : ueye 카메라에서 UCHAR cv :: Mat structure로 CHAR 데이터를로드하는 방법
- 30. 사람이 읽을 수있는 cv :: Mat 유형을 결정하는 방법은 무엇입니까?
http://docs.opencv.org/modules/core/doc/operations_on_arrays.html#void%20reduce%28InputArray%20src,%20OutputArray%20dst,%20int를 보라 % 20dtype, % 20int % 20rtype, % 20int % 20dtype % 29 그러나 폭 * 높이 3 채널 요소를 너비 * 높이 * 채널 행렬로 변환해야합니다. – Micka
어떻게 변환 할 수 있습니까? Mat :: reshape()를 사용하고 있지만이 경우 행렬은 Mat :: IsCountinuous()를 만족해야합니다. –